129 слов | 1 минута
Шпаргалка по командам Git
Справочник основных команд Git для ежедневной разработки: работа с ветками, индексом, историей коммитов и удалёнными репозиториями.

Примечание:
HEADуказывает на текущее состояние файлов в рабочей директории.
Ветки и слияние
Git позволяет вести параллельную разработку через ветки. По завершении работы ветку сливают обратно в основную — все её коммиты становятся частью main.
Merge vs Rebase
Merge сохраняет полную историю и хронологический порядок коммитов:
# переходим в ветку, куда хотим слить
git checkout main
git merge feature/12345

Rebase перемещает коммиты ветки поверх целевой, создавая линейную историю:
git checkout main
git rebase feature/12345

В проекте используется ветка main (боевые сайты) и feature-ветки для задач. Ветка develop используется для крупных задач (новый дизайн, тестирование на отдельном домене).
Основные команды
# добавить все изменения в индекс
git add .
# посмотреть статус рабочей директории
git status
# создать коммит
git commit -m "текст коммита"
# посмотреть список веток
git branch
# создать ветку
git branch dev
# переключиться на ветку
git checkout dev
# показать изменения вне индекса
git diff file01
# показать изменения в индексе
git diff --staged file01
# откатить файл до последнего коммита (вне индекса)
git restore file01
# откатить файл до последнего коммита (из индекса)
git restore --staged file01
# посмотреть содержимое коммита
git show 435hh5345h34k5345435h345h
# перенести HEAD на коммит для просмотра состояния
git checkout 435hh5345h34k5345435h345h
git checkout main # вернуться обратно
# откатить файлы к состоянию на момент коммита
git reset --hard 435hh5345h34k5345435h345h
# отменить откат
git reset --hard ORIG_HEAD
# слить ветку dev в main
git checkout main
git merge dev
# отправить изменения в GitLab
git push
# получить изменения из GitLab
git pull
Удаление файла из истории
Используется, если в репозиторий случайно попал файл с чувствительными данными:
# удалить файл из всех коммитов истории
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch <myfile>' \
--prune-empty --tag-name-filter cat -- --all
git push origin --force --all
git push origin --force --tags
Для удаления файла только из отслеживания (физически файл остаётся на диске):
git rm --cached --ignore-unmatch <myfile>
git commit -am "удаляет файл из отслеживания"
git push origin {branch name}