1. Создание и клонирование репозиториев

Клонировать существующий репозиторий
git clone ssh://user@domain.com/repo.git

Создать локально новый репозиторий
git init

2. Основные операции с файлами и подготовка изменений

Посмотреть состояние репозитория (какие файлы изменены, добавлены или удалены)
git status

Показать изменения в отслеживаемых файлах
git diff

Добавить все изменения в индекс для следующего коммита
Устаревший способ:
git add

Рекомендуемый способ:
git add -A

Добавить только некоторые части изменений в одном файле
git add -p <файл>

3. Коммиты и история
Закоммитить все отслеживаемые файлы

(уже добавленные в индекс или изменённые, если использовать -a)

git commit -a
или
git commit
(если ранее вы добавили нужные файлы вручную командой git add)

Изменить последний коммит (не используйте для уже опубликованных коммитов!)
git commit —amend

Посмотреть историю коммитов (начиная с последних)
git log

Посмотреть историю изменений конкретного файла
git log -p <файл>

Посмотреть, кто и какие изменения вносил в файл
git blame <файл>

4. Работа с ветками и тегами

Список всех веток (локальных и удалённых)
git branch -av

Переключение на другую ветку
git checkout <ветка>

Создать новую ветку на основе текущей и остаться в старой ветке
git branch <новая-ветка>

Создать новую ветку и сразу переключиться на неё
git checkout -b <новая-ветка>

Создать ветку, отслеживающую удалённую (remote-tracking)
git checkout —track <репо/ветка>

Удалить локальную ветку
git branch -d <ветка>

Присвоить тег текущему коммиту
git tag <имя-тега>

5. Обновление и публикация (работа с удалённым репо)

Список всех настроенных удалённых репозиториев
git remote -v

Информация об удалённом репозитории
git remote show <репо>

Добавить новый удалённый репозиторий
git remote add <короткое-имя> <url>

Скачать все изменения из удалённого репо (без слияния)
git fetch <репо>

Скачать изменения и сразу слить их с текущей веткой
git pull <репо> <ветка>

Отправить (опубликовать) локальные изменения в удалённый репозиторий
git push <репо> <ветка>

Удалить ветку в удалённом репозитории
git branch -dr <репо/ветка>

Отправить все теги в удалённый репозиторий
git push —tags

6. Слияние и перемещение(Merge/Rebase)

Слить ветку с текущей (merge)
git merge <ветка>

Переместить (rebase) текущую ветку на другую
(не перемещайте уже опубликованные коммиты!)
git rebase <ветка>

Отменить rebase
git rebase —abort

Продолжить rebase после разрешения конфликтов
git rebase —continue

Разрешение конфликтов с помощью инструмента слияния
git mergetool
или вручную в редакторе, после чего отметить файлы как разрешённые:
git add <файл>
или удалить файл, если нужно:
git rm <файл>

7. Отмена изменений

Удалить все локальные изменения и вернуть рабочую директорию к HEAD
git reset —hard HEAD

Отменить изменения в одном файле (вернуться к версии HEAD)
git checkout HEAD <файл>

Откатить конкретный коммит (создаёт новый коммит с обратными изменениями)
git revert <коммит>

Сбросить HEAD на определённый коммит

Полностью удалить изменения после указанного коммита
git reset —hard <коммит>

Сохранить изменения как незакоммиченные (unstaged)
git reset <коммит>

Сохранить неотслеживаемые локальные изменения
git reset —keep <коммит>

8. Лучшие практики

1. Добавляйте в коммит связанные изменения
Два разных бага — два разных коммита. Так проще ориентироваться в истории и откатывать изменения при необходимости.

2. Коммитьте часто
Частые небольшие коммиты помогают интегрировать изменения и предотвращают сложные конфликты.

3. Не публикуйте незавершённый код
Разделите большую задачу на логические части и публикуйте только законченную часть. Если нужно “сохраниться” для себя — используйте git stash.

4. Тестируйте перед коммитом
Убедитесь, что код работает и не содержит ошибок. Ваш локальный репозиторий — ваше поле для экспериментов, но перед публикацией коммита нужно всё перепроверить.

5. Пишите хорошие комментарии к коммитам
Краткое описание (примерно 50 символов).
Пустая строка.
Подробные ответы на вопросы «Зачем?», «Что изменено?».

6. Не используйте Git как простое “хранилище бэкапов”
Git — это система контроля версий. Старайтесь, чтобы каждый коммит был осмысленным и логически законченным.

7. Используйте ветки
Ветки помогают разделять разные линии разработки. Создавайте ветки для новых задач, исправлений багов или экспериментов.

8. Согласуйте рабочий процесс в команде
Выберите схему (Git Flow, Feature Branch Workflow, и т.д.) и следуйте ей вместе с коллегами.

9. Помощь и документация
Получить справку по конкретной команде
git help <command>

Полезные учебные ресурсы:
Git Tower (англ.)
Git Guide (англ.)
Официальная книга по Git (рус.)