Шпаргалка по Git
Последнее обновление
Настройка и конфигурация
Разовая настройка, чтобы ваши коммиты подписывались правильно.
| Команда | Что делает |
|---|---|
git config --global user.name "Ada" | Задать имя для коммитов |
git config --global user.email you@x.com | Задать email для коммитов |
git config --list | Показать всю текущую конфигурацию |
git config --global init.defaultBranch main | Называть первую ветку новых репозиториев main |
git config --global core.editor "code --wait" | Задать редактор по умолчанию |
git --version | Вывести установленную версию Git |
Создание и клонирование
Создать новый репозиторий или скопировать существующий.
| Команда | Что делает |
|---|---|
git init | Создать новый репозиторий в текущей папке |
git clone <url> | Скопировать удалённый репозиторий локально |
git clone <url> mydir | Клонировать в папку с заданным именем |
git clone --depth 1 <url> | Поверхностное клонирование (только последний коммит) |
git clone -b dev <url> | Клонировать и переключиться на ветку dev |
Индексация и коммиты
Запись изменений в историю проекта.
| Команда | Что делает |
|---|---|
git add file.txt | Добавить один файл в индекс |
git add . | Добавить в индекс все изменения в текущей папке |
git add -p | Интерактивно добавить выбранные куски |
git commit -m "message" | Зафиксировать проиндексированные изменения |
git commit -am "message" | Проиндексировать отслеживаемые файлы и сделать коммит |
git commit --amend | Изменить последний коммит |
git rm file.txt | Удалить файл и проиндексировать удаление |
Ветвление
Работа над изменениями в изоляции.
| Команда | Что делает |
|---|---|
git branch | Показать локальные ветки |
git branch feature | Создать новую ветку |
git switch feature | Переключиться на существующую ветку |
git switch -c feature | Создать и переключиться за один шаг |
git checkout feature | Старый способ переключения веток |
git branch -d feature | Удалить влитую ветку |
git branch -m newname | Переименовать текущую ветку |
Слияние и перебазирование
Объединение работы из двух веток.
| Команда | Что делает |
|---|---|
git merge feature | Влить feature в текущую ветку |
git merge --no-ff feature | Всегда создавать коммит слияния |
git rebase main | Воспроизвести ваши коммиты поверх main |
git rebase -i HEAD~3 | Интерактивно изменить последние 3 коммита |
git rebase --continue | Продолжить после разрешения конфликтов |
git rebase --abort | Отменить текущее перебазирование |
git cherry-pick <hash> | Применить один коммит к этой ветке |
Удалённые репозитории (push, pull, fetch)
Синхронизация локального репозитория с удалённым, например GitHub.
| Команда | Что делает |
|---|---|
git remote -v | Показать настроенные удалённые репозитории |
git remote add origin <url> | Привязать удалённый репозиторий с именем origin |
git fetch | Скачать изменения с удалённого без слияния |
git pull | Скачать и влить удалённую ветку |
git push | Отправить коммиты на удалённый репозиторий |
git push -u origin main | Отправить и задать upstream-ветку |
git push origin --delete feature | Удалить удалённую ветку |
Просмотр (status, log, diff)
Посмотреть, что изменилось и что происходит.
| Команда | Что делает |
|---|---|
git status | Показать проиндексированные, неиндексированные и неотслеживаемые файлы |
git log | Показать историю коммитов |
git log --oneline --graph | Компактная история с графом веток |
git diff | Неиндексированные изменения относительно индекса |
git diff --staged | Проиндексированные изменения относительно последнего коммита |
git show <hash> | Показать изменения одного коммита |
git blame file.txt | Показать, кто последним изменил каждую строку |
Отмена изменений
Безопасное восстановление после ошибок.
| Команда | Что делает |
|---|---|
git restore file.txt | Отменить неиндексированные изменения в файле |
git restore --staged file.txt | Убрать файл из индекса (сохранив изменения) |
git reset --soft HEAD~1 | Отменить последний коммит, оставив изменения в индексе |
git reset --hard HEAD~1 | Отменить последний коммит и отбросить изменения |
git revert <hash> | Создать новый коммит, отменяющий другой |
git stash | Отложить изменения на потом |
git stash pop | Вернуть последний отложенный набор изменений |
Каждая команда Git, которая вам нужна, на одной странице. Эта шпаргалка по Git - быстрый справочник по повседневному контролю версий: настройка Git, индексация и коммиты, ветвление, слияние и перебазирование, синхронизация с удалёнными репозиториями и отмена ошибок.
Это стандартные команды Git, которые работают одинаково в Linux, macOS и Windows. Копируйте нужное или попробуйте их вживую в playground терминала - настоящая оболочка в браузере, ничего устанавливать не нужно.
Часто задаваемые вопросы по шпаргалке Git
Эта шпаргалка по Git бесплатна?
В чём разница между merge и rebase?
git merge объединяет две ветки, создавая новый коммит слияния, который связывает их истории, сохраняя точную историю обеих. git rebase вместо этого воспроизводит ваши коммиты один за другим поверх другой ветки, создавая линейную историю без коммита слияния. Merge безопасен и не разрушает историю; rebase делает историю чище, но переписывает коммиты, поэтому не перебазируйте ветки, которые другие уже скачали.Как отменить коммит в Git?
git reset --soft HEAD~1 отменяет последний коммит, но оставляет изменения в индексе, а git reset --hard HEAD~1 полностью их отбрасывает. Для уже опубликованного коммита используйте git revert <hash>, чтобы создать новый коммит, который его обращает, не переписывая историю.