Шпаргалка по Git
Доступный для поиска и печати справочник по Git — конфигурация, ветки, слияние, перебазирование, удалённые репозитории, stash, теги и отмена изменений. Бесплатно.
Настройка и конфигурация
10git config --global user.name "Jane Doe"
Задать имя для ваших коммитов
git config --global user.email "jane@example.com"
Задать email для ваших коммитов
git config --global init.defaultBranch main
Новые репозитории начинать с ветки "main"
git config --global core.editor "code --wait"
Использовать VS Code как редактор Git по умолчанию
git config --global pull.rebase true
Rebase вместо merge при pull
git config --global alias.co checkout
Создать псевдоним-сокращение (git co)
git config --global --list
Показать все глобальные настройки
git config user.email
Вывести email текущего репозитория
git config --global color.ui auto
Включить цветной вывод в командной строке
git help <command>
Открыть man-страницу команды
Создание и клонирование репозиториев
9git init
Инициализировать репозиторий в текущей папке
git init my-project
Создать репозиторий в новом каталоге
git clone https://example.com/repo.git
Клонировать удалённый репозиторий по HTTPS
git clone git@example.com:user/repo.git
Клонировать удалённый репозиторий по SSH
git clone <url> my-dir
Клонировать в каталог с заданным именем
git clone --depth 1 <url>
Поверхностное клонирование только последнего коммита
git clone --branch dev <url>
Клонировать и переключиться на ветку
git clone --recurse-submodules <url>
Клонировать и инициализировать все подмодули
git remote add origin <url>
Привязать remote к существующему репозиторию
Индексация и коммиты
11git add file.txt
Добавить один файл в индекс
git add .
Добавить все изменения в текущем каталоге
git add -A
Добавить все изменения, включая удаления
git add -p
Интерактивно индексировать выбранные фрагменты
git commit -m "Add login form"
Закоммитить индекс с сообщением
git commit -am "Fix typo"
Проиндексировать и закоммитить одной командой
git commit --amend
Изменить последний коммит
git commit --amend --no-edit
Добавить индекс к последнему коммиту
git rm file.txt
Удалить файл и проиндексировать удаление
git mv old.txt new.txt
Переименовать/переместить файл и проиндексировать
git reset file.txt
Убрать файл из индекса, сохранив изменения
Ветки
10git branch
Показать все локальные ветки
git branch -a
Показать локальные и отслеживаемые ветки
git switch -c feature/login
Создать ветку и переключиться на неё
git switch main
Переключиться на существующую ветку
git checkout -b hotfix
Классический способ создать и сменить ветку
git branch -m old-name new-name
Переименовать ветку
git branch -d feature/login
Удалить слитую локальную ветку
git branch -D feature/login
Принудительно удалить неслитую ветку
git push origin --delete feature/login
Удалить ветку на удалённом репозитории
git switch -
Вернуться на предыдущую ветку
Слияние и rebase
10git merge feature/login
Слить ветку в текущую
git merge --no-ff feature/login
Слить, всегда создавая merge-коммит
git merge --squash feature/login
Объединить ветку в одно изменение в индексе
git merge --abort
Отменить слияние с конфликтами
git rebase main
Перенести коммиты текущей ветки на main
git rebase -i HEAD~3
Интерактивно изменить последние 3 коммита
git rebase --continue
Продолжить rebase после разрешения конфликтов
git rebase --abort
Отменить выполняемый rebase
git cherry-pick <hash>
Применить один коммит к текущей ветке
git mergetool
Запустить инструмент разрешения конфликтов
Удалённые репозитории и синхронизация
11git remote -v
Показать настроенные remotes и их URL
git remote add upstream <url>
Добавить второй remote с именем upstream
git remote set-url origin <url>
Изменить URL существующего remote
git fetch
Скачать изменения без слияния
git fetch --all --prune
Получить все remotes и удалить устаревшие ветки
git pull
Получить и интегрировать изменения
git pull --rebase
Pull с rebase локальных коммитов поверх
git push
Отправить локальные коммиты на remote
git push -u origin main
Push с установкой upstream-ветки
git push --force-with-lease
Безопасный force-push без затирания чужого
git push origin --tags
Отправить все локальные теги на remote
Просмотр и сравнение
10git status
Показать индекс, изменения и неотслеживаемые файлы
git status -s
Показать статус в компактном формате
git diff
Показать неиндексированные изменения относительно индекса
git diff --staged
Показать изменения, готовые к коммиту
git diff main..feature
Сравнить две ветки
git diff HEAD~1 HEAD
Сравнить последний коммит с родителем
git show <hash>
Показать детали и diff одного коммита
git show HEAD:file.txt
Показать файл в состоянии на момент коммита
git log --stat
Показать коммиты со сводкой изменённых файлов
git shortlog -sn
Подсчитать коммиты по авторам
Отмена изменений
10git restore file.txt
Отменить неиндексированные изменения файла
git restore --staged file.txt
Убрать файл из индекса, сохранив изменения
git restore --source=HEAD~1 file.txt
Восстановить файл из прежнего коммита
git checkout -- file.txt
Классический способ отменить локальные изменения
git reset --soft HEAD~1
Отменить коммит, оставив изменения в индексе
git reset --mixed HEAD~1
Отменить коммит, оставив изменения не в индексе
git reset --hard HEAD~1
Отменить коммит и отбросить изменения
git revert <hash>
Создать коммит, отменяющий другой коммит
git clean -fd
Удалить неотслеживаемые файлы и каталоги
git clean -nd
Предпросмотр того, что удалит clean
Stash (отложенные изменения)
10git stash
Сохранить незакоммиченные изменения и очистить дерево
git stash push -m "wip"
Отложить изменения с описанием
git stash -u
Отложить, включая неотслеживаемые файлы
git stash list
Показать все наборы отложенных изменений
git stash show -p
Показать diff последнего stash
git stash apply
Применить последний stash, сохранив его
git stash pop
Применить последний stash и удалить его
git stash apply stash@{2}
Применить конкретный stash по индексу
git stash drop stash@{0}
Удалить одну запись stash
git stash clear
Удалить все записи stash
Теги
9git tag
Показать все теги
git tag v1.0.0
Создать лёгкий тег на HEAD
git tag -a v1.0.0 -m "Release 1.0.0"
Создать аннотированный тег с сообщением
git tag -a v1.0.0 <hash>
Пометить тегом конкретный прошлый коммит
git show v1.0.0
Показать сведения о теге
git push origin v1.0.0
Отправить один тег на remote
git push origin --tags
Отправить все локальные теги на remote
git tag -d v1.0.0
Удалить тег локально
git push origin --delete v1.0.0
Удалить тег на remote
Логи и история
12git log
Показать полную историю коммитов
git log --oneline
Показать компактный лог по строке на коммит
git log --oneline --graph --all
Показать ветки в виде ASCII-графа
git log -p
Показать историю коммитов с diff
git log --author="Jane"
Фильтровать историю по автору
git log --since="2 weeks ago"
Фильтровать историю по диапазону дат
git log --pretty=format:"%h %an %s"
Настроить формат вывода лога
git blame file.txt
Показать, кто менял каждую строку
git reflog
Показать историю положений HEAD
git bisect start
Начать бинарный поиск плохого коммита
git bisect good <hash>
Пометить коммит как хороший при bisect
git bisect bad
Пометить текущий коммит как плохой
Нет записей, соответствующих «:q».
Нужна помощь?
Возникла проблема с этим инструментом? Сообщите нам.