Заметки про Git
Я даже немного удивлен, что этой заметки до сих пор не было в моем блоге. В git действительно есть раздражающие мелочи, о которых постоянно забываешь и ломишься в гугл, чтобы найти как сделать то или иное действие. На просторах Интернета я наткнулся на довольно хорошую заметку с такими мелочами. Я ее переработал и дополнил и хочу положить ее здесь.
git reflog
Эта команда отображает историю изменений указателей (refs) в репозитории Git, включая изменения указателей на ветки, теги, HEAD и другие объекты.
Каждая запись в выводе команды git reflog содержит следующую информацию:
- хеш коммита, на который указывал указатель в момент изменения
- тип указателя (ветка, HEAD, тег и т.д.)
- новый хеш коммита, на который указывает указатель после изменения
- комментарий, который был добавлен при изменении указателя (если был добавлен)
Вы можете использовать ее, например, чтобы найти хеш коммита, на который указывала ветка до удаления или сброса, и восстановить ее.
git reset HEAD@{index}
Очень часто бывает ситуация, когда вы допустили помарку или забыли закоммитить какую-то довольно банальную мелочь. Тогда вам поможет команда
git add .
git commit --amend --no-edit
А вот эта команда поможет изменить сообщение вашего последнего коммита
git commit --amend
Вы же придерживаетесь Conventional Commits, не так ли?
Если вы закоммитили что-то не в ту ветку, например сделали коммит в закрытую на мерж ветку, то вам поможет вот такая конструкция
git branch new-branch # Создаст новую ветку со всеми коммитами
git reset HEAD@{index} --hard # Удалит коммиты из текущей
Отменить коммит поможет
git revert ${HASH}
А отменить лишь изменения в одном файле поможет
git checkout ${HASH} -- /path/to/file