2013-11-21 2 views
3

Я не могу понять, как получить доступ к результатам раздавленной фиксации во время переустановки. Я хотел бы иметь возможность отредактировать фиксацию после того, как 2 коммиты были сжаты в предыдущую. Мой файл перебазироваться выглядит следующим образом:Как отредактировать после раздавливания во время интерактивной перезагрузки?

p f70f90f ... some message ... 
s 514ee77 ... some message ... 
s ab01b05 ... some message ... 
           <-- want to edit 3 commits here! 
p b109cc1 ... some message ... 

Я уже пробовал:

e f70f90f ... some message ... 
s 514ee77 ... some message ... 
s ab01b05 ... some message ... 
p b109cc1 ... some message ... 

Но это позволяет мне отредактировать первый коммит, то давит на следующие два.

И:

p f70f90f ... some message ... 
s 514ee77 ... some message ... 
s ab01b05 ... some message ... 
p b109cc1 ... some message ... 

Но это берет меня прямо в мой текстовый редактор для редактирования сообщение фиксации в течение последних 3-х фиксаций, не давая мне шанс, чтобы отредактировать себя обязательства.

Я считаю, что я мог бы решить эту проблему, используя две перестановки: 1), в которой я сквошу, и 2), в которой я редактирую. Но отрасль имеет достаточное количество следующих коммитов, что перебазирование занимает довольно много времени.

Как это сделать в одной перестановке? Или есть другое, более подходящее решение?

(Мне известно о проблемах с обновлением общедоступной работы, это не проблема для этого проекта).

ответ

2

Вы можете остановить для редактирования на третьей фиксации

p f70f90f ... some message ... 
s 514ee77 ... some message ... 
e ab01b05 ... some message ... 
p b109cc1 ... some message ... 

таким образом вы остановиться на ab01b05 для редактирования. Так что если вы

git reset --soft HEAD^

вы можете сделать изменения. Тогда

git commit --amend

раздавят изменения в последней фиксации (который в настоящее время является кабачок из f70f90f и 514ee77)

и вы установлены.

После этого

git rebase --continue

приведет вас к следующему шагу вашего перебазирования.

+1

@MattFenwick: it * does * work, но вы можете сохранить текст фиксации третьего коммита перед выполнением 'git reset --soft HEAD ^': 'cp .git/COMMIT_EDITMSG/tmp/save; git reset --soft HEAD^' – torek

+0

@torek хороший момент о третьем сообщении фиксации, спасибо. –

+0

Потратил меня на то, чтобы понять это, но это работает как шарм. Благодаря! –

Смежные вопросы