Популярные команды Git

В ходе работы часто приходится использовать разные команды git. Здесь список наиболее часто используемых мной команд.

Если Вам необходимо посмотреть историю коммитов в текущей ветке:

$ git log

Когда нужно отменить все изменения до какого-то конкретного коммита:

$ git reset --hard commit_hash

в данном случае commit_hash тот коммит, к которому нужно откатиться.

Откат означает потерю всех ваших изменений после того коммита, к которому вы откатились!

Отменить самый последний коммит (при этом создается новый коммит, который фиксирует отмену предыдущего)

$ git revert HEAD

Также, бывает случаи когда вы сделали коммит не в той ветке. Перенести его в нужную ветку достаточно просто (перенос коммита в текущую ветку):

$ git cherry-pick commit-hash
При переносе коммита в новую ветку, в старой создается коммит об этом переносе

Чтобы переименовать последний коммит:

$ git commit --amend -m "Новое название"

Иногда бывают случаи когда необходимо перестать индексировать файл:

$ git rm --cached filename.log

Такой же трюк можно проделать и для всей папки рекурсивно:

$ git rm -r --cached folderName

А вот, если необходимо удалить файл или директорию, то следует выполнить предыдущие команды, но без флага --cached

$ git rm fileName
После физического удаления или удаления из индекса, необходимо создать коммит, чтобы зафиксировать изменения!

Когда вы отработали в какой-то ветке и в ней больше не нуждаетесь, ее надо удалять. Чтобы сделать это локально:

$ git branch -d <имя_ветки>

И удалить ветку из удаленного репозитория

$ git push origin --delete <имя_ветки>

Если Вы работаете с подмодулями (submodule), то иногда нужно поменять ветку у подмодуля. Делается это так:

$ cd submodule_directory
$ git checkout new_awesome_branch
$ cd ..
$ git add submodule_directory
$ git commit -m "moved submodule to new_awesome_branch"
$ git push

Другому разработчику достаточно будет выполнить команду

$ git submodule update

и он получит коммит, который указывает на новую ветку.

Так же редко, но бывает необходимость удалить подмодуль. Для этого надо выполнить три команды:

# Удаляете подмодуль из .git/config
git submodule deinit -f path/to/submodule

# Удаляем директорию подмодуля из файла .git/modules
rm -rf .git/modules/path/to/submodule

# Удаляем подмодуль из .gitmodule вместе с его директорией
git rm -f path/to/submodule

Иногда приходится работать с несколькими конфигами гита. Как вариант: один конфиг устанавливаете глобально для всех проектов:

$ git config --global user.name "John Doe"

а далее, если необходимо поменять конфиг для конкретного проекта, в папке с этим проектом выполняем предыдущую команду но без флага --global:

$ git config user.name "John Doe"

Чтобы переместить файл из одной директории в другую, следует выполнить команду:

$ git mv path/to/old/filder/filename.txt path/to/new/filder/