В ходе работы часто приходится использовать разные команды git. Здесь список наиболее часто используемых мной команд.
Если Вам необходимо посмотреть историю коммитов в текущей ветке:
1 |
$ git log |
Когда нужно отменить все изменения до какого-то конкретного коммита:
1 |
$ git reset --hard commit_hash |
в данном случае commit_hash тот коммит, к которому нужно откатиться.
Отменить самый последний коммит (при этом создается новый коммит, который фиксирует отмену предыдущего)
1 |
$ git revert HEAD |
Также, бывает случаи когда вы сделали коммит не в той ветке. Перенести его в нужную ветку достаточно просто (перенос коммита в текущую ветку):
1 |
$ git cherry-pick commit-hash |
Чтобы переименовать последний коммит:
1 |
$ git commit --amend -m "Новое название" |
Иногда бывают случаи когда необходимо перестать индексировать файл:
1 |
$ git rm --cached filename.log |
Такой же трюк можно проделать и для всей папки рекурсивно:
1 |
$ git rm -r --cached folderName |
А вот, если необходимо удалить файл или директорию, то следует выполнить предыдущие команды, но без флага --cached
1 |
$ git rm fileName |
Когда вы отработали в какой-то ветке и в ней больше не нуждаетесь, ее надо удалять. Чтобы сделать это локально:
1 |
$ git branch -d <имя_ветки> |
И удалить ветку из удаленного репозитория
1 |
$ git push origin --delete <имя_ветки> |
Если Вы работаете с подмодулями (submodule), то иногда нужно поменять ветку у подмодуля. Делается это так:
1 2 3 4 5 6 |
$ cd submodule_directory $ git checkout new_awesome_branch $ cd .. $ git add submodule_directory $ git commit -m "moved submodule to new_awesome_branch" $ git push |
Другому разработчику достаточно будет выполнить команду
1 |
$ git submodule update |
и он получит коммит, который указывает на новую ветку.
Иногда приходится работать с несколькими конфигами гита. Как вариант: один конфиг устанавливаете глобально для всех проектов:
1 |
$ git config --global user.name "John Doe" |
а далее, если необходимо поменять конфиг для конкретного проекта, в папке с этим проектом выполняем предыдущую команду но без флага --global
:
1 |
$ git config user.name "John Doe" |
Чтобы переместить файл из одной директории в другую, следует выполнить команду:
1 |
$ git mv path/to/old/filder/filename.txt path/to/new/filder/ |