Как раздавить последний коммит в конкретный коммит (который не является предыдущим коммитом)? - PullRequest
0 голосов
/ 23 октября 2019

Предположим, я пытаюсь перебазировать мою текущую ветку, в которой есть изменения на вершине мастера: -


And am presented with an interactive window like this with all the new commits listed:

pick A Commit message A
pick B Commit message B
pick C Commit message C
pick D Commit message D
pick E Commit message E

И я хочу раздавить E на C, а не на предыдущий коммит D. Есть ли способчтобы сделать это?

Coz Если я сделаю это

pick A Commit message A
pick B Commit message B
pick C Commit message C
pick D Commit message D
squash E Commit message E

, это всегда будет раздавливать E на D, но я хочу раздавить E в какой-то предыдущий коммит, который я могу выбрать как C или B илиA.

1 Ответ

2 голосов
/ 23 октября 2019

Вы можете изменить порядок строк в «интерактивном окне» любым удобным для вас способом, а перебазировка изменит порядок соответствующих коммитов. Например, вы можете переместить строку для коммита C так, чтобы она была выше линии для коммита E:

pick A Commit message A
pick B Commit message B
pick D Commit message D
pick C Commit message C
squash E Commit message E

Теперь в результирующей истории будут изменения от коммитов A, B и D в этом порядке,затем новый коммит с изменениями из коммитов C и E в одном коммите.

Или переместите строку для коммита E, чтобы она была ниже линии для коммита C:

pick A Commit message A
pick B Commit message B
pick C Commit message C
squash E Commit message E
pick D Commit message D

Это сохранит изменения коммитов A и B в указанном порядке, затем создаст новый коммит с объединенными изменениями C и E и, наконец, новый коммит с теми же изменениями, что и D.

...