2016-04-21 9 views
1

Я нахожусь в середине битвы за ад из-за неудачного git commit --fixup. Я думаю, что я определил источник, и я нахожусь в лучшем месте, чем я начал. Однако, если я посмотрю на git reflog, эта последовательность строк «rebase -i» будет выглядеть так же, как и предыдущие неудачные попытки.Могу ли я добавить строку в рефлог?

Могу ли я добавить свою собственную линию в рефлог? Скажи что-нибудь, что будет выглядеть так:

$ git reflog mark '== we are not worse off than we started here ==' 
$ git reflog -3 
cb6536f [email protected]{0}: mark: == we are not worse off than we started here == 
cb6536f [email protected]{1}: rebase -i (finish): fixup! foo: baz the widgets 
9db07de [email protected]{1}: rebase -i (pick): fixup! baz: implement widget bazzing 
+0

Ближайший думаю, что я могу думать о 'мерзавец совершить --fixup ГОЛОВА --allow пусто ', хотя это создает фактическую фиксацию, которая будет безобидно уходить на следующий' git rebase -i -autosquash' – badp

ответ

2

Вы можете добавить новую запись reflog в любое время, используя ту же самую команду мерзавца использует для добавления новых записей reflog, а именно git update-ref. Это «сантехника» (сценаристская) команда, поэтому она не очень удобна для пользователя, и вам может понадобиться добавить собственный скрипт или псевдоним.

Примеры:

git update-ref -m 'mark: whatever' HEAD HEAD 
git update-ref -m 'mark: another thing' refs/heads/branch branch 
git update-ref -m 'mark: third thing' refs/heads/branch refs/heads/branch 
hash=$(git rev-parse refs/heads/branch) && \ 
    git update-ref -m 'mark: 4' refs/heads/branch $hash 

Обратите внимание, что <ref> (первый не вариант аргумент) должен быть полностью изложен. <newvalue> может быть любым, что разрешает действительный SHA-1, поэтому средняя команда из трех примеров может работать, но для безопасности, вероятно, лучше всего использовать третью форму (точно повторите <ref>) или используйте фактическую SHA -1 hash (четвертая форма), давая git rev-parse убедиться, что это действительно допустимое имя ветви.

(При использовании HEAD вы можете пропустить проверку, так как мерзавец не может функционировать вообще, если HEAD не является допустимым именем.)