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 (рус.)