Заметки про Git

2 мин

Я даже немного удивлен, что этой заметки до сих пор не было в моем блоге. В 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