Приведены наиболее употребляемые команды Git, каждая команда имеет пояснительный комментарий.
Команды Git по категориям
На этой странице собран список наиболее востребованных консольных команд системы контроля версий Git, команды сгруппированы по категориям, это позволит легко отыскать нужную. Конечно, это неполный их перечень, но и его хватит на 90% ваших задач. Если встречаются неизвестные термины, советую посмотреть их описание на странице Введение в Git.
Для получения помощи по консольным командам Git, можно воспользоваться такими командами:
git <команда> —help
git <команда> -h
Индексирование изменений
Если надо добавить в индекс несколько файлов, то они перечисляются в конце команды через пробел.
В этой команде очень важны опции, т.к. они определяют степень отката. Поясним это на примерах.
1. git reset – – soft HEAD~ — указатель репозитория переместится на предыдущий коммит(HEAD~), файлы рабочей области и список индекса останутся без изменений, т.е. в состоянии последнего коммита.
2. git reset HEAD~ — указатель репозитория переместится на предыдущий коммит(HEAD~), список индекса тоже изменится и будет в состоянии, как перед предпоследним коммитом, т.е. откат изменений произойдет как по коммиту, так и по индексу, файлы рабочей области не изменяются. Фактически будут отменены последние команды git commit и git add. Это неполная версия команды, более полный вид этой же команды:
git reset – – mixed HEAD~
Поскольку ключ —mixed действует по умолчанию, то допустим упрощенный синтаксис команды.
3. git reset – – hard HEAD~ — полностью отменяет все действия, совершенные после предпоследнего коммита. Будут изменены указатель репозитория Git, состояние индекса и файлы рабочей области на состояние, которое было после предпоследнего коммита.
Внимание! Будьте осторожны, поскольку команда git reset —hard HEAD~ изменяет файлы рабочей области, т.е. все вновь созданные файлы и все изменения в существующих файлах рабочего проекта пропадут без предупреждения!
Подробнее о команде git reset вы можете почитать здесь.
Поскольку по этой команде возможно удаление из проекта и индекса сделанных ранее изменений, то некоторой защитой от ошибочных действий служит ключ «-f«.
Коммит
git commit –a – сделать коммит всех измененных файлов индекса.
Вновь созданные, но не индексированные файлы сохранены в репозитории не будут. Ключ «-a» команды git commit позволяет не индексировать предварительно изменения перед коммитом, т.к. при этом ключе перед коммитом происходит автоматическое индексирование всех отслеживаемых файлов.
Идентификатор коммита можно узнать с помощью команды git log.
Работа с Git репозиторием
Эта команда работает, если вы клонировали свой локальный репозиторий, т.к. origin – это синоним удаленного репозитория, откуда был клонирован локальный.
Например, если вам надо отредактировать неудачный комментарий к комиту, то по этой команде вы попадете во встроенный редактор с загруженной строкой комментария.
Работа с ветками
Примечание. Разница между 2-мя предыдущими командами в том, что через merge производят слияние веток локального репозитория, через pull удобно объединять ветку локальную с веткой из удаленного репозитория
git merge test – объединяет изменения из ветки test в текущую ветку . Ветка test не изменяется.
git rebase master — перебазирование. Переносит изменения из текущей ветки в ветку master. Более полное описание команды смотрите здесь.
Обе команды merge и rebase объединяют изменения одной ветки с другой. Разница между ними следующая. После merge у вас остаются две ветки, одна из которых включает изменения другой. После rebase у вас будет одна полноценная ветка, в которой учтены изменения обоих веток. Т.е., после rebase в проекте становится меньше альтернативных веток.
При слиянии изменений командами merge и rebase возможны конфликты, когда изменения в ветках пересекаются. В этом случае Git не может самостоятельно объединить ветки из-за конфликтов в файлах. Он приостанавливает объединение и выдает сообщение о конфликте. Чтобы посмотреть, какие файлы не объединились, можно выполнить git status, git diff, потом вручную исправить конфликты в файлах и выполнить индексирование командой git add.
Получение дополнительной информации
Обратите внимание, если вы проиндексируете свои изменения, то команда покажет, что после последнего коммита изменений не было. Чтобы увидеть индексированные изменения используйте ключ (см. ниже).
При слиянии веток у коммита могут быть два и более родителей.
Как исключить файлы из отслеживания
Если вы хотите, чтобы Git не только не отслеживал какие-то файлы, но и не сообщал вам о них, то надо создать файл .gitignore в корне проекта , в котором с помощью специальных шаблонов можно задать файлы для игнорирования. Для создания шаблонов в этом файле используются шаблоны glob, которые представляют собой упрощенные регулярные выражения, например,
# — признак комментария, такие строки игнорируются в файле исключений.
*.[ab] – игнорировать файлы, заканчивающиеся на .a или .b
*~ – игнорировать файлы, заканчивающиеся знаком ~
Более подробно о том, как запретить отслеживать некоторые файлы проекта проекта можно прочитать здесь.
О редакторе
Для вывода текста или создания комментария Git использует редактор Vim(на момент написания статьи). Как с ним работать, вам подскажет Гугл.