git 如何将简单提交转换为合并提交?

qcbq4gxm  于 2023-02-14  发布在  Git
关注(0)|答案(2)|浏览(145)

我在 VSCode 版本控制中完成了整个过程。

我有两个分支,一个main分支和b1分支。b1分支来自main分支。在b1上做了一些提交之后,我把它合并回main,但是main已经得到了一些与合并相冲突的提交。我解决了冲突,然后完成了合并。
在那之后我做了一个撤销提交。VSCode允许我做更多的修改,然后再次按提交,完成合并。这创建了一个简单的提交,而不是在主分支中的合并提交。
问题是从那以后发生了很多提交。我想把这个提交设为合并提交。
我怎样才能解决这个问题呢?
下面是该问题的一个示例:https://github.com/KijeviGombooc/merge_test

68bkxrlz

68bkxrlz1#

你得时不时地来点硬的:

git branch temp $( git commit-tree -p master~2 -p b1 -m "Here's the comment I want for the merge" master~^{tree} )
# there you have a temp branch that is on a merge commit that has e018374be64546188 and b1 as parents and has the same content as 3457a643f9b7c7a20f15
git checkout temp
git cherry-pick master # now we cherry-pick that commit at the top of master
# if you like the result, move master to the new location
git branch -f master # assumning you didn't move from temp

现在你可以用新的闪亮的master分支强行推入遥控器。

laximzn5

laximzn52#

我是如何解决这个问题的:

  • 在合并失败之前 checkout 提交
  • 将分支合并到此提交
  • run:'git rebase --到新合并提交失败前提交合并主服务器'
  • 然后对每个分支执行以下操作: checkout 分支,然后运行:'重设母版'
  • 然后强制push(git push --force)每个分支

相关问题