В ходе работы часто приходится использовать разные команды 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/