Краткий справочник по командам Git
Полезные команды по работе с Git и Github
Данный справочник является кратким конспектом из источника git-scm.com и некоторых других ресурсов
Открываем командную строку. С помощью команды cd переходим в нужную нам директорию проекта
git init
- инициализирует Git-репозиторий (создается поддиректория .git)
git status
- показывает состояние файлов
git add as.js
- добавляет (индексирует) файл as.js для следующего комита (фиксации)
git add .
- добавляет в индекс все файлы.
git add -u
- добавляет в индекс все измененные файлы.
git reset -- path/file.cpp
- удаляет из индекса файл path/file.cpp.
git rm --cached as.js
- удаляет файл as.js из индекса, не удаляя его в рабочей директории
git rm -r --cached qsf
- удаляет каталог qsf (рекурсивно) из индекса, не удаляя его в рабочей директории
Коммиты
git checkout
- переключает на самый свежий коммит
git checkout 946e23a
- переключает на коммит 946e23a
git commit -m 'first commit'
- фиксирует изменения с комментарием в кавычках (параметр -m указывает на комментарий)
git commit
- фиксирует изменения, но для записи комментария открывает редактор по умолчанию. В Ubuntu, обычно, редактор Nano. После ввода комментария жмем
^O
, затемEnter
, затем^X
. Комментарий не должен быть пустым, иначе коммит отменяется.
- фиксирует изменения, но для записи комментария открывает редактор по умолчанию. В Ubuntu, обычно, редактор Nano. После ввода комментария жмем
git commit -a -m 'added new'
- параметр
-a
заставляет Git автоматически индексировать каждый уже отслеживаемый на момент коммита файл, позволяет обойтись безgit add
- параметр
git commit --amend
- откроется редактор с последним коммитом, в котором можно исправить комментарий к коммиту. Если после последнего коммита был сделан push, то нужно выполнить еще одну команду:
git push <remote> <branch> --force
- откроется редактор с последним коммитом, в котором можно исправить комментарий к коммиту. Если после последнего коммита был сделан push, то нужно выполнить еще одну команду:
Ветвление
git branch
- выводит список имеющихся веток (при выводе списка звездочка
*
указывает ветку, на которую указывает HEAD т.е. ветку, на которой вы находитесь в настоящий момент)
- выводит список имеющихся веток (при выводе списка звездочка
git branch -r
- выводит список имеющихся веток текущего репозитория на удаленном сервере
git branch dev
- создает ветку с именем
dev
(но не переключает на нее)
- создает ветку с именем
git branch -d dev
- удаляет ветку с именем
dev
- удаляет ветку с именем
git checkout dev
- переключает на ветку
dev
- переключает на ветку
git checkout -b dev
- из главной ветки main создает ветку
dev
и сразу переключается на нее
- из главной ветки main создает ветку
git checkout -b hotfix-2.1.1 main
- из ветки
main
создает веткуhotfix-2.1.1
и сразу переключается на нее
- из ветки
git branch -v
- показывает последний коммит в каждой ветке
git branch -M main
- переименовает текущую ветку, даже если имя у текущей ветки существует.
- -M является сокращением от --move --force
git branch -m old new
- переименовывает локальную ветку с именем
old
наnew
. - -m - сокращение от --move
- переименовывает локальную ветку с именем
Слияние ветвей
Обратите внимание Перед тем как слить ветки, нужно с помощью команды git checkout <name_branch>
перейти в ту ветку, в которую будет производится слияние
git merge dev
- вливает ветку
dev
в текущую ветку
- вливает ветку
git mergetool
- открывает графический инструмент для разрешения конфликтов
git branch --merged
- показывает список веток, которые вы уже слили с текущей. Те ветки из этого списка, перед которыми нет символа
*
, можно смело удалять командойgit branch -d
; наработки из этих веток уже включены в другую ветку, так что ничего не потеряется.
- показывает список веток, которые вы уже слили с текущей. Те ветки из этого списка, перед которыми нет символа
git branch --no-merged
- показывает список веток, содержащие наработки, которые вы пока ещё не слили в текущую ветку. Эти ветки невозможно удалить командой
git branch -d
- показывает список веток, содержащие наработки, которые вы пока ещё не слили в текущую ветку. Эти ветки невозможно удалить командой
Ветви, разное
git checkout main article.md
- Копирует файл
article.md
из веткиmain
в текущую ветку. Вместо файла можно указать каталог.
- Копирует файл
git checkout 946e23a article.md
- Копирует файл
article.md
из коммита946e23a
в текущую ветку. Вместо файла можно указать каталог.
- Копирует файл
git cherry-pick 946e23a
- Копирует коммит
946e23a
из другой ветки в текущую. Ветки должны находится в одном репозитории.
- Копирует коммит
Тайники в Git
Тайники нужны для временного сохранения незафиксированных изменений. Это может понадобится для быстрого переключения между ветками. Если вы сделали изменения в текущей ветке, то переключится в другую ветку вы не сможете, пока не сделаете коммит или тайник. Если вы не хотите фиксировать изменения в коммит, то можно спрятать эти изменения в тайник.
git stash
- прячет незафиксированные изменения в тайник, при этом рабочий каталог приобретает состояние последнего коммита.
git stash -u
- прячет незафиксированные изменения и неотслеживаемые файлы в тайник
git stash list
- выводит список всех тайников. Последний тайник имеет ссылку
stash@{0}
и находится в верху списка.
- выводит список всех тайников. Последний тайник имеет ссылку
git stash show
- показывает, какие изменения сохранены в последнем тайнике (
stash@{0}
). Показывает сколько строк вы добавили и удалили в каждом из измененных файлов.
- показывает, какие изменения сохранены в последнем тайнике (
git stash show stash@{2}
- показывает, какие изменения сохранены в тайнике
stash@{2}
. Показывает сколько строк вы добавили и удалили в каждом из измененных файлов.
- показывает, какие изменения сохранены в тайнике
git stash show -u
- показывает, какие изменения и неотслеживаемые файлы сохранены в последнем тайнике (
stash@{0}
).
- показывает, какие изменения и неотслеживаемые файлы сохранены в последнем тайнике (
git stash show -p
- показывает, какие изменения сохранены в последнем тайнике (
stash@{0}
). Показывает все подробности об изменениях в каждом из файлов.
- показывает, какие изменения сохранены в последнем тайнике (
git stash pop
- Применяет спрятанные изменения из последнего тайника к текущей рабочей ветке и удаляет этот тайник из стека тайников. Тайник можно применить к любой ветке, не важно, в какой ветке он создан.
git stash apply
- Применяет спрятанные изменения из последнего тайника к текущей рабочей ветке, но не удаляет этот тайник из стека тайников. Тайник можно применить к любой ветке, не важно, в какой ветке он создан.
git stash apply stash@{3}
- Применяет спрятанные изменения из тайника
stash@{3}
к текущей рабочей ветке, но не удаляет этот тайник из стека тайников.
- Применяет спрятанные изменения из тайника
git stash clear
- Очищает весь стек тайников.
git stash drop stash@{2}
- Удаляет тайник
stash@{2}
из стека тайников.
- Удаляет тайник
git stash branch new
- Создаёт новую ветку из последнего тайника.
git stash branch new stash@{2}
- Создаёт новую ветку из тайника
stash@{2}
.
- Создаёт новую ветку из тайника
Удаленные репозитории
Удалённый, означает другой - это репозиторий, который может находиться на вашем локальном компьютере, либо в сети, либо в интернете. К удаленному репозиторию можно обращаться по его сокращенному имени (мему) или URL-адресу.
git remote
или
git remote show
- Выводит список доступных удалённых репозиториев в виде имён (мемов). Имя
origin
получит репозиторий, с которого производилось клонирование текущего репозитория.
- Выводит список доступных удалённых репозиториев в виде имён (мемов). Имя
git remote show og
- Выводит подробную информацию об удалённом репозитории
og
- Выводит подробную информацию об удалённом репозитории
git branch -r
- Выводит список доступных удалённых репозиториев и имеющихся у этих репозиториев веток.
git remote -v
- Выводит список имён удалённых репозиториев, соответствующие им URL и доступность на чтение и запись.
git remote add og url
- Добавляет ссылку на удалённый репозиторий, расположенный по адресу
url
, и присваивает ему имяog
.
- Добавляет ссылку на удалённый репозиторий, расположенный по адресу
git clone url
- Клонирует репозиторий из указанного адреса
url
- Клонирует репозиторий из указанного адреса
git clone url asd
- Клонирует репозиторий из указанного адреса
url
и переименовывает вasd
- Клонирует репозиторий из указанного адреса
git push og dev
- Отправляет ветку
dev
на удаленный репозиторийog
(og - это либо полный путь к удаленному репозиторию, либо его сокращенный мем). Эта команда срабатывает только в случае, если вы клонировали с сервера, на котором у вас есть права на запись, и если никто другой с тех пор не выполнял командуpush
. Если вы и кто-то ещё одновременно клонируете, затем он выполняет команду push, а затем команду push выполняете вы, то ваш push точно будет отклонён. Вам придётся сначала вытянуть их изменения и объединить с вашими с помощьюpull
илиfetch+merge
. Только после этого вам будет позволено выполнить push.
- Отправляет ветку
git push -u og dev
- Отправляет ветку
dev
на удаленный серверog
и связывает локальную ветку dev и ветку dev в удаленном репозитории. То есть, после такой команды (которая выполняется единожды), можно будет отправлять/принимать изменения лишь выполняяgit push
из ветки без указания всяких алиасов для сервера и удалённых веток.
- Отправляет ветку
git fetch og
- Извлекает из удаленного репозитория
og
все изменения, которых нет в вашем локальном репозитории, но не сливает их с вашими наработками и не модифицирует то, над чем вы работаете в данный момент. Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы с помощью командыmerge
.
- Извлекает из удаленного репозитория
git pull
- Тоже самое, что
git fetch
+git merge
. Извлекает из удаленного репозитория все изменения, которых нет в вашей текущей локальной ветке репозитория и сливает их с вашими наработками.
- Тоже самое, что
git push og --delete ser
- Удаляет ветку
ser
в удаленном репозиторииog
. На самом деле, удаляется указатель на сервере. Как правило, Git-сервер оставит данные, пока не запустится сборщик мусора. Т. е., если ветка случайно была удалена, чаще всего ее легко восстановить.
- Удаляет ветку
git remote rename kt oleg
- Переименовывает удаленный репозиторий
kt
вoleg
- Переименовывает удаленный репозиторий
git remote rm paul
- Удаляет ссылку на удаленный репозиторий
paul
. Это бывает нужно, например, если вы сменили сервер или больше не используете определённое зеркало, или, возможно, контрибьютор перестал быть активным
- Удаляет ссылку на удаленный репозиторий
Смотри также: