Шпаргалка по командам Git

Быстро находите команду Git по ключевому слову (branch, commit, rebase, stash...), с разбивкой по категориям и кнопкой, чтобы скопировать каждую команду прямо в терминал.

Запустить

git init
Инициализирует новый репозиторий Git в текущей папке.
git clone <url>
Клонирует удалённый репозиторий в новую локальную папку.
git config --global user.name "Nom"
Задаёт глобальное имя автора коммитов.
git config --global user.email "email"
Задаёт глобальный email автора коммитов.

Состояние и история

git status
Показывает изменённые, добавленные и неотслеживаемые файлы.
git log
Показывает историю коммитов.
git log --oneline --graph --all
Сжатая история с графом веток.
git diff
Показывает изменения, не добавленные в индекс.
git diff --staged
Показывает изменения, уже добавленные в индекс (staged).
git show <commit>
Показывает подробности конкретного коммита.

Изменить

git add <fichier>
Добавляет файл в область подготовки (staging).
git add -A
Добавляет все изменённые, добавленные и удалённые файлы.
git commit -m "message"
Создаёт коммит из проиндексированных файлов.
git commit --amend
Изменяет последний коммит (сообщение и/или содержимое).
git restore <fichier>
Отменяет непроиндексированные изменения файла.
git restore --staged <fichier>
Убирает файл из области подготовки, не теряя изменений.
git rm <fichier>
Удаляет файл и индексирует удаление.

Ветки

git branch
Показывает список локальных веток.
git branch <nom>
Создаёт новую ветку.
git switch <branche>
Переключает активную ветку.
git switch -c <branche>
Создаёт ветку и сразу переключается на неё.
git branch -d <branche>
Удаляет локальную ветку, уже слитую в другую.
git branch -D <branche>
Принудительно удаляет локальную ветку, даже если она не слита.

Слияние и rebase

git merge <branche>
Сливает ветку в текущую ветку.
git rebase <branche>
Переносит коммиты текущей ветки на другую базу.
git rebase -i HEAD~n
Интерактивный rebase последних n коммитов (переупорядочивание, squash...).
git cherry-pick <commit>
Применяет конкретный коммит к текущей ветке.

Удалённый

git remote -v
Показывает список настроенных удалённых репозиториев.
git fetch
Получает удалённые ссылки, не сливая их.
git pull
Получает и сливает удалённые изменения.
git push
Отправляет локальные коммиты в удалённый репозиторий.
git push -u origin <branche>
Отправляет ветку и связывает её как отслеживаемую.
git push --force-with-lease
Принудительная отправка, более безопасная, чем обычный --force.

Отменить

git reset --soft HEAD~1
Отменяет последний коммит, сохраняя изменения в индексе.
git reset --mixed HEAD~1
Отменяет последний коммит, сохраняя изменения вне индекса.
git reset --hard HEAD~1
Отменяет последний коммит и безвозвратно теряет его изменения.
git revert <commit>
Создаёт новый коммит, отменяющий действие предыдущего коммита.

Откладывание (stash)

git stash
Временно откладывает текущие изменения.
git stash pop
Повторно применяет последний stash и удаляет его из списка.
git stash list
Показывает сохранённые stash.

Метки

git tag
Показывает существующие теги.
git tag -a v1.0.0 -m "message"
Создаёт аннотированный тег.
git push origin --tags
Отправляет все локальные теги в удалённый репозиторий.

Как это работает

Около сорока популярных команд Git разбиты по категориям (начало работы, состояние и история, ветки, слияние и rebase, удалённый репозиторий, отмена, stash, теги). Введите ключевое слово в строке поиска — имя команды (rebase), понятие («отменить», «слить») или категорию — чтобы отфильтровать список на лету, а затем нажмите «Копировать» рядом с нужной командой и вставьте её прямо в терминал.

В чём разница между git fetch и git pull?

git fetch загружает новые ссылки из удалённого репозитория, не изменяя вашу локальную ветку, так что у вас есть время изучить изменения перед их интеграцией. git pull делает то же самое, а затем автоматически сливает (или делает rebase, в зависимости от настройки) эти изменения в вашу текущую ветку.

Когда использовать git reset, а когда git revert?

Используйте git reset, чтобы переписать историю ветки, которой ещё не делились (или осторожно, по согласованию с командой), а git revert — чтобы аккуратно отменить коммит, уже отправленный и, возможно, использованный другими: он добавляет новый коммит отмены, не переписывая существующую историю.

Эта шпаргалка полностью статична и после загрузки страницы работает офлайн: никакие данные, включая ваш поисковый запрос, не отправляются на сервер.