Настройка
git config --global user.email "mail" устанавливает адрес электронной почты
git config --global user.name "name" устанавливает имя автора у выполняемых коммитов
Создание репозитория
git clone url скачивает репозиторий вместе с его историей изменений
git init название проекта создаёт новый локальный репозиторий с заданным именем
Внесение изменений
git add file индексирует указанный файл для последующего коммита
git diff показывает различия по внесённым изменениям в ещё не проиндексированных файлах
git diff --staged показывает различия между проиндексированной и последней зафиксированной версиями файлов
git commit -m "..." фиксирует проиндексированные изменения и сохраняет их в историю версий (... - описание)
git reset file отменяет индексацию указанного файла, при этом сохраняет его содержимое
git status перечисляет все новые или изменённые файлы, которые нуждаются в фиксации
Операции с файлами
git rm --cached file убирает конкретный файл из контроля версий, но физически оставляет его на своём месте
git rm file удаляет конкретный файл из рабочей директории и индексирует его удаление
git mv original-file new-name перемещает и переименовывает указанный файл, сразу индексируя его для последующего коммита
Сохранение фрагментов
git stash временно сохраняет все не зафиксированные изменения отслеживаемых файлов
git stash drop сбрасывает последние временно сохранённыe изменения
git stash list выводит список всех временных сохранений
git stash pop восстанавливает состояние ранее сохранённых версий файлов
Работа с ветками
git branch список именованных веток коммитов с указанием выбранной ветки
git branch name-branch создаёт новую ветку
git branch -d name-branch удаляет выбранную ветку
git merge name-branch вносит изменения указанной ветки в текущую ветку
git switch -c name-branch переключается на выбранную ветку и обновляет рабочую директорию до её состояния
Просмотр истории
git diff name-branch1...name-branch2 показывает разницу между содержанием коммитов двух веток
git log история коммитов для текущей ветки
git log --follow file история изменений конкретного файла, включая его переименование
git show name-commit выводит информацию и показывает изменения в выбранном коммите
Откат коммитов
git reset --hard name-commit сбрасывает всю историю вместе с состоянием рабочей директории до указанного коммита
git reset name-commit отменяет все коммиты после заданного, оставляя все изменения в рабочей директории
Синхронизация с удалённым репозиторием
git fetch remote repository скачивает всю историю из удалённого репозитория (remote repository - удаленный репозиторий)
git merge remote-repository / name-branch вносит изменения из ветки удалённого репозитория в текущую ветку локального репозитория
git pull загружает историю из удалённого репозитория и объединяет её с локальной (pull = fetch + merge)
git push remote-repository name-branch загружает все изменения локальной ветки в удалённый репозиторий