Как вы делаете git format-patch между головой и коммитом head - x? - PullRequest
0 голосов
/ 03 ноября 2011

Иногда я фиксирую свои изменения, а потом вдруг вспоминаю, что я забыл добавить какой-либо комментарий или сделать простое форматирование, и, сделав это, я сделал еще один коммит.Когда приходит время форматировать патч, я не хочу, чтобы «небольшие изменения» становились отдельным патчем.Я хочу взять последние два коммита и объединить их в один патч, как если бы они были разницей между текущим состоянием и до того, как я начал коммитить.

Поиск в Google не помог.Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Если вы не выдвинули свои изменения, используйте интерактивный git rebase и пометьте эти коммиты как исправления:

git rebase -i HEAD~5

# opens editor with:
pick  deadbeaf commit
fixup abcd123  small change # edit this line to say "fixup", then save and exit editor
pick  3133715  another commit

В качестве альтернативы, если вы обнаружите, что вы забыли некоторые изменения сразу после фиксации, добавьте это изменение виндексировать и использовать git commit --amend, чтобы добавить его в коммит HEAD

0 голосов
/ 03 ноября 2011

Самый простой способ сделать это, вероятно, использовать интерактивное перебазирование, чтобы объединить эти два коммита. Если неполная фиксация была A, а последующее небольшое исправление было зафиксировано B, что дает следующий график фиксации:

 ---- A --- B (master)

Вы можете сделать:

 git rebase -i A^

Появится текстовый редактор с инструкциями о том, как отредактировать этот файл, чтобы изменить порядок, удалить, отредактировать или объединить коммиты в истории. (В данном случае история - это просто все, начиная с родительского элемента A, то есть только A и B.)

Вы можете изменить pick на squash t начало строки, соответствующей фиксации B, сохранить файл, выйти из редактора, и история master будет переписана так, чтобы они были единым коммитом .

Очевидно, что поскольку это переписывание истории, вам следует избегать этого, если вы уже поделились этими коммитами с кем-либо.

Этот раздел Pro Git содержит полезную информацию о переписывании истории таким образом.


В качестве альтернативы, это достаточно простая ситуация, которую вы могли бы просто сделать:

git reset --soft HEAD^
git commit --amend

Однако, если эти два коммита не в самом начале вашей ветки, лучше использовать интерактивный ребаз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...