Шпаргалка по командам Git: полный справочник
Git — это один из самых важных инструментов в арсенале каждого разработчика. Эта шпаргалка содержит все основные команды, которые вам потребуются в повседневной работе с системой контроля версий. Будь вы новичок или опытный программист, этот справочник поможет вам быстро найти нужную команду.
1. Настройка Git (Configuration) #
Перед первым использованием Git необходимо настроить базовую информацию о пользователе. Эти настройки будут присвоены всем вашим коммитам и помогут идентифицировать автора изменений. Дополнительно можно настроить редактор кода, ветку по умолчанию и другие параметры.
# Установить имя пользователя для всех репозиториев
git config --global user.name "Иван Петров"
git config --global user.email "[email protected]"
# Установить редактор кода по умолчанию
git config --global core.editor "code --wait"
# Установить основную ветку как main вместо master
git config --global init.defaultBranch main
# Посмотреть все установленные параметры
git config --list
git config --list --global
# Установить параметр для одного репозитория (без --global)
git config user.name "Локальное имя"
Подробнее о /ru/git/nastrojka-polzovatelya-git/ можно прочитать в отдельной статье.
2. Создание и клонирование репозитория #
Начинаем работу с Git — инициализируем новый репозиторий или клонируем существующий. Инициализация создаёт новый локальный репозиторий, а клонирование позволяет скачать полную копию удалённого проекта со всей историей.
# Инициализировать новый репозиторий в текущей папке
git init
# Инициализировать репозиторий в конкретной папке
git init <папка>
# Создать bare репозиторий (обычно на сервере)
git init --bare
# Клонировать репозиторий
git clone <url>
# Клонировать в папку с другим названием
git clone <url> <папка>
# Неполное клонирование (только последние коммиты)
git clone --depth 1 <url>
# Клонировать конкретную ветку
git clone -b <ветка> <url>
# Клонировать с определённой глубиной истории
git clone --depth 10 <url>
3. Статус и просмотр изменений #
Перед добавлением изменений в коммит важно знать, какие файлы были изменены и как они отличаются от последней версии. Команда status показывает общее состояние репозитория, а diff позволяет увидеть конкретные различия.
# Посмотреть статус всех файлов
git status
# Краткий формат вывода (более компактный)
git status -s
# Показать unstaged изменения (изменения в файлах)
git diff
# Показать staged изменения (что будет в коммите)
git diff --staged
# Показать все изменения (staged и unstaged)
git diff HEAD
# Сравнить две ветки
git diff <ветка1>..<ветка2>
# Посмотреть изменения в конкретном файле
git diff <файл>
4. Добавление файлов и создание коммитов #
Это ядро работы с Git — добавление изменений в staging area и создание коммитов. Каждый коммит содержит снимок проекта в определённый момент времени с описанием того, что было изменено. Для получения дополнительной информации см. /ru/git/git-commit/.
# Добавить файл в staging area
git add <файл>
# Добавить все изменения
git add .
# Интерактивное добавление по кускам (полезно для частичных коммитов)
git add -p
# Создать коммит с сообщением
git commit -m "Добавлена новая функция"
# Добавить и закоммитить в одной команде (только для отслеживаемых файлов)
git commit -am "Исправлена ошибка"
# Изменить последний коммит (добавить забытые файлы или изменить сообщение)
git commit --amend
# Изменить только сообщение последнего коммита
git commit --amend --no-edit
# Создать пустой коммит (иногда необходимо для ci/cd)
git commit --allow-empty -m "Пустой коммит"
5. История коммитов и просмотр логов #
История проекта — это его “летопись”, где записано каждое важное изменение. Git log предоставляет мощный инструмент для навигации по истории, поиска конкретных коммитов и анализа эволюции проекта. /ru/git/git-log/ подробно описывает все возможности этой команды.
# Показать всю историю коммитов
git log
# Компактный формат (одна строка на коммит)
git log --oneline
# Красиво отобразить ветки и слияния
git log --oneline --graph --all
# История коммитов конкретного автора
git log --author="Иван Петров"
# Коммиты за последние 2 недели
git log --since="2 weeks ago"
# Коммиты с определённым текстом в сообщении
git log --grep="исправлена ошибка"
# Показать историю конкретного файла с различиями
git log -p <файл>
# История файла с учётом переименований
git log --follow <файл>
# Показать конкретный коммит со всеми деталями
git show <коммит>
# Показать коммит за два шага до HEAD
git show HEAD~2
# Показать, кто последний раз изменил каждую строку файла
git blame <файл>
6. Работа с ветками #
Ветки позволяют работать параллельно над несколькими функциями без влияния на основной код. Это фундаментальный концепт в Git, позволяющий разработчикам работать независимо друг от друга. Подробный разбор /ru/git/vetki-v-git/ поможет лучше понять работу с ветками.
# Список локальных веток
git branch
# Список всех веток (локальные и удалённые)
git branch -a
# Создать новую ветку (без переключения)
git branch <имя>
# Удалить ветку безопасно (только если она слита)
git branch -d <имя>
# Принудительно удалить ветку
git branch -D <имя>
# Переименовать ветку
git branch -m <старое_имя> <новое_имя>
# Переключиться на ветку
git switch <имя>
# Создать и переключиться на новую ветку
git switch -c <имя>
# Создать ветку из удалённой ветки и переключиться
git switch -c <имя> origin/<имя>
# Альтернативный способ создания и переключения
git checkout -b <имя>
7. Слияние и перебазирование #
Слияние и перебазирование — это два основных способа интеграции изменений из одной ветки в другую. Merge создаёт специальный коммит-слияние, а rebase переписывает историю. Выбор между ними влияет на историю проекта и удобство работы.
# Слить ветку в текущую
git merge <ветка>
# Слить с созданием коммита-слияния (даже если это fast-forward)
git merge --no-ff <ветка>
# Слить, сжав все коммиты в один
git merge --squash <ветка>
# Отменить процесс слияния
git merge --abort
# Перебазировать текущую ветку на другую
git rebase <ветка>
# Интерактивное перебазирование последних 3 коммитов
git rebase -i HEAD~3
# Отменить перебазирование
git rebase --abort
# Продолжить после решения конфликта
git rebase --continue
# Скопировать конкретный коммит в текущую ветку
git cherry-pick <коммит>
# Скопировать диапазон коммитов
git cherry-pick <коммит1>..<коммит2>
8. Удалённые репозитории и синхронизация #
Работа с удалёнными репозиториями (GitHub, GitLab, Bitbucket) — это то, что позволяет команде сотрудничать и делиться кодом. Push отправляет изменения на сервер, pull скачивает и объединяет изменения. /ru/git/git-push/ содержит подробную информацию о загрузке изменений на сервер.
# Показать список удалённых репозиториев
git remote -v
# Добавить новый удалённый репозиторий
git remote add origin <url>
# Изменить URL удалённого репозитория
git remote set-url origin <новый_url>
# Переименовать удалённый репозиторий
git remote rename origin upstream
# Удалить удалённый репозиторий
git remote remove <имя>
# Скачать изменения с сервера (без слияния)
git fetch origin
# Скачать изменения со всех удалённых репозиториев
git fetch --all
# Скачать и слить изменения из сервера
git pull origin main
# Pull с перебазированием вместо слияния
git pull --rebase origin main
# Загрузить ветку на сервер
git push origin main
# Загрузить и установить upstream ветку
git push -u origin main
# Безопасный force push (отвергает, если на сервере есть изменения)
git push --force-with-lease
# Загрузить все теги
git push origin --tags
# Удалить ветку на сервере
git push origin --delete <ветка>
# Загрузить конкретный тег
git push origin v1.0.0
9. Временное сохранение изменений (Stash) #
Stash позволяет временно сохранить незакончённую работу и вернуться к чистому состоянию рабочей директории. Это полезно, когда вам нужно срочно переключиться на другую ветку или задачу. Более подробно о /ru/git/git-stash/ можно прочитать в специальной статье.
# Сохранить текущие изменения
git stash
# Сохранить изменения с описанием
git stash push -m "Описание работы"
# Список всех сохранённых изменений
git stash list
# Вернуть последние сохранённые изменения и удалить их
git stash pop
# Вернуть конкретные сохранённые изменения (без удаления)
git stash apply stash@{0}
# Удалить конкретное сохранение
git stash drop stash@{0}
# Показать различия в сохранении
git stash show -p stash@{0}
# Создать ветку из сохранения (полезно для конфликтов)
git stash branch <новая_ветка>
# Удалить все сохранения
git stash clear
10. Отмена изменений и отката #
Иногда необходимо отменить изменения или вернуться к предыдущему состоянию. Git предоставляет несколько способов это сделать, от отмены несохранённых изменений до отката конкретных коммитов. /ru/git/git-reset/ подробно объясняет различные способы отката.
# Отменить unstaged изменения в файле
git restore <файл>
# Убрать файл из staging area (отменить git add)
git restore --staged <файл>
# Создать новый коммит, который отменяет изменения
git revert <коммит>
# Отменить последний коммит, сохранив изменения (soft reset)
git reset HEAD~1
# Отменить последний коммит и выбросить изменения (hard reset)
git reset --hard HEAD~1
# Сбросить на состояние удалённой ветки
git reset --hard origin/main
# Показать историю всех операций (для восстановления потерянных коммитов)
git reflog
# Восстановить коммит из reflog
git reset --hard <коммит_из_reflog>
# Альтернативный способ отмены файла (новый синтаксис)
git checkout <файл>
# Отменить конкретный файл в конкретном коммите
git checkout <коммит> -- <файл>
11. Теги (Tags) #
Теги используются для отметки конкретных точек в истории, обычно для обозначения версий релиза. Легкие теги — это просто указатели на коммиты, а аннотированные теги содержат дополнительную информацию (автор, дату, сообщение).
# Список всех тегов
git tag
# Создать лёгкий тег
git tag v1.0.0
# Создать аннотированный тег (с сообщением)
git tag -a v1.0.0 -m "Релиз версии 1.0.0"
# Показать информацию о теге
git show v1.0.0
# Загрузить все теги на сервер
git push origin --tags
# Загрузить конкретный тег
git push origin v1.0.0
# Удалить тег локально
git tag -d v1.0.0
# Удалить тег на сервере
git push origin --delete v1.0.0
# Создать тег на конкретном коммите
git tag v1.0.0 <коммит>
12. Полезные утилиты и операции #
Помимо основных команд, Git имеет множество полезных утилит для управления файлами, поиска ошибок и продвинутых операций. Эти команды помогают автоматизировать и оптимизировать работу с репозиторием.
# Переименовать или переместить файл
git mv <старое_имя> <новое_имя>
# Удалить файл из Git и с диска
git rm <файл>
# Удалить файл из Git, но оставить его на диске
git rm --cached <файл>
# Удалить все untracked файлы и папки
git clean -fd
# Показать, какие файлы будут удалены (сухой запуск)
git clean -n
# Начать бинарный поиск коммита с ошибкой
git bisect start
git bisect bad
git bisect good <коммит>
# Создать рабочую директорию для отдельной ветки
git worktree add <путь> <ветка>
# Инициализировать и обновить подмодули
git submodule update --init --recursive
# Показать размер объектов в хранилище
git gc
13. Таблица флагов и опций #
Вот самые полезные флаги, которые часто используются с командами Git:
| Флаг | Команда | Описание |
|---|---|---|
-a | commit | Добавить и закоммитить отслеживаемые файлы |
-m | commit, tag | Сообщение для коммита или тега |
--amend | commit | Изменить последний коммит |
-p | add | Интерактивное добавление по кускам |
--staged | diff | Показать staged изменения |
-b | clone, switch | Указать ветку |
--no-ff | merge | Всегда создавать коммит-слияние |
-i | rebase | Интерактивное перебазирование |
--force-with-lease | push | Безопасный force push |
--all | log, push, fetch | Применить ко всем ветк/репозиториям |
-v | remote, branch | Подробный вывод |
-d | branch | Удалить ветку |
-D | branch | Принудительно удалить ветку |
--depth | clone, fetch | Неполное клонирование |
-u | push | Установить upstream ветку |
14. Часто задаваемые вопросы (FAQ) #
Какие команды Git нужно знать в первую очередь? #
Если вы только начинаете, сосредоточьтесь на базовом наборе:
git config— настройка пользователяgit initилиgit clone— создание/клонирование репозиторияgit status— проверка статусаgit addиgit commit— сохранение измененийgit pushиgit pull— синхронизация с серверомgit branchиgit merge— работа с ветками
Эти команды покрывают 80% работы в Git. Остальное вы выучите по мере необходимости.
Как посмотреть все доступные команды Git? #
Используйте команду git help:
# Список всех команд
git help -a
# Полная документация для конкретной команды
git help <команда>
# Краткая справка
git <команда> -h
Как отменить последний коммит в Git? #
Это зависит от того, что вы хотите сделать:
- Отменить коммит, но сохранить изменения:
git reset HEAD~1 - Отменить коммит и выбросить изменения:
git reset --hard HEAD~1 - Создать новый коммит-отмену:
git revert HEAD - Изменить сообщение последнего коммита:
git commit --amend -m "новое сообщение"
Подробнее см. /ru/git/git-reset/.
Как удалить ветку в Git? #
Для удаления локальной ветки:
git branch -d <имя> # безопасное удаление (если слита)
git branch -D <имя> # принудительное удаление
Для удаления удалённой ветки:
git push origin --delete <имя>
Чем git pull отличается от git fetch? #
git fetch— скачивает изменения с сервера, но не объединяет их с вашим кодом. Это безопасная операция, которая не изменяет вашу рабочую директорию.git pull— это комбинацияgit fetch+git merge. Она скачивает изменения И сразу объединяет их с вашей веткой.
По этой причине многие рекомендуют использовать git fetch для большей контроля над процессом слияния.
Как посмотреть историю изменений файла? #
Используйте несколько команд в зависимости от нужной информации:
# История коммитов файла
git log <файл>
# История с различиями (diff)
git log -p <файл>
# История с учётом переименований
git log --follow <файл>
# Кто последний раз изменил каждую строку
git blame <файл>
# История конкретной строки
git log -L <строка>,<конец>:<файл>
Как разрешить конфликт слияния? #
Конфликты происходят, когда две ветки изменили одни и те же строки:
- Откройте файл с конфликтом — вы увидите маркеры
<<<<<<<,=======,>>>>>>> - Отредактируйте содержимое — выберите, какие изменения оставить
- Добавьте файл:
git add <файл> - Завершите слияние:
git commit
Либо используйте инструмент слияния: git mergetool
Когда использовать rebase вместо merge? #
- Merge: используйте для интеграции завершённых функций в главную ветку (сохраняет историю всех изменений)
- Rebase: используйте перед отправкой изменений на сервер (делает историю чище) или для обновления вашей ветки новыми изменениями из main
Общее правило: не переписывайте историю публичных веток.
Заключение #
Эта шпаргалка охватывает большинство операций, которые вам потребуются в работе с Git. Помните, что не обязательно помнить все команды наизусть — важно знать, где их найти, когда они вам нужны. Практика — это ключ к овладению Git. Начните с простых команд, постепенно добавляя более продвинутые техники в свой арсенал.
Для более глубокого изучения отдельных тем обратитесь к специальным статьям о /ru/git/git-commit/, /ru/git/vetki-v-git/, /ru/git/git-log/ и других аспектах работы с Git.
Полезные ресурсы:
- Официальная документация Git
- Git Book (полная книга на русском)
- Команда
git help— встроенная документация в вашем терминале