我最近进行了重新分支操作——也就是,在主分支
当我将
我该如何修改提交记录,使得其同时有
我的提交历史目前看起来像这样:
我希望我的提交历史看起来像这样:
注意:我还没有将
master
的基础上创建一个新分支,并将功能分支(例如TASK-123
)合并到新分支TASK-123-b
中,代替已经被合并的功能分支。这是我们Git工作流程中的常规操作,每当一个功能分支与master
冲突时,我们都会进行这样的操作。当我将
TASK-123
合并到TASK-123-b
时,自然会出现合并冲突,我解决了它并提交了。新的分支TASK-123-b
和合并TASK-123
的提交只有一个父节点:master
。我该如何修改提交记录,使得其同时有
master
和TASK-123
两个父节点?我猜测需要使用git rebase
命令,但除此之外,我不知道如何将另一个父分支/提交添加到一个提交中。我的提交历史目前看起来像这样:
master -*---*-----* ...
\ \
TASK-123 *---*-* \
\
TASK-123-b * ...
我希望我的提交历史看起来像这样:
master -*---*-----* ...
\ \
TASK-123 *---*-* \
\ \
TASK-123-b \---* ...
注意:我还没有将
TASK-123-b
推送到远程,所以在它上面变基的提交不应该对我的同事造成任何问题。
git commit-tree
命令,你可以创建一个带有任何父提交的提交(它们来自于你的-p
参数)。然后你必须手动引用新的提交。一个停止的合并(例如,冲突)会留下一个名为MERGE_HEAD
的文件,其中包含要合并的提交的ID,而git commit
将以HEAD
作为第一父提交,以MERGE_HEAD
中的内容作为第二父提交进行下一次提交。听起来你不知何故丢失了MERGE_HEAD
文件。 - torekgit merge parent-2 parent-3 ... parent-n
,然后使用checkout --ours
修复所有合并冲突。我认为这会起作用。 - Jonathan SwinneyMERGE_HEAD
文件,然后进行提交,无论提交中实际包含什么内容,git都会将该提交视为HEAD
和MERGE_HEAD
的合并? - Martin