当我拉远程分支时,我现在遇到了问题。
一旦我在冲突的情况下解决了所有问题,我必须提交所有更改。
因此,一旦我创建了合并请求,它就包含了所有这些请求 因此很难审查。我现在只想提交我的提交。
为了使合并请求更容易被审核,您将如何解决这些冲突?
我得到的问题如下:
我们说我有两个分支:A has commits (a, b)
B has commits (c, d)
。我还创建了合并请求(MR)(MR-A
,MR-B
)到master
。因此MR-A has (a, b)
和MR-B has (c, d)
会在里面提交。但是,如果我在A
分支,那么我将分支B
重新绑定,以便MR-A has (a, b, c, d)
在MR-B also has (c, d)
时提交。最后,我将MR-A
合并到master
。但是MR-B still has (c, d)
问题是:如何从c, d
删除MR-B
?
答案 0 :(得分:2)
Rebase是您正在寻找的,而不是合并。
读:
When do you use git rebase instead of git merge?
What's the difference between 'git merge' and 'git rebase'?
答案 1 :(得分:1)
如果您仅pull
(不是pull --rebase
),则合并的解决方案涉及提交(而不是git add
+ git rebase --continue
)
这意味着您可以进行一次或几次提交,以完全解决git pull之后检测到的冲突。
所以你需要做的只是git add -p
,只能添加冲突文件:
这样,你最终会得到单独的提交。您可以制作更精确的合并请求,更容易查看。
这对于一个rebase来说更难做,一旦你修复了一个提交,并且只有一个提交,并且将有冲突的文件添加到索引中。
如何从MR-B中删除c,d?
你没有:你只是删除MRB:如果你在MRB之上重新安排MRA,然后将MRA合并到master,MRB没有任何角色:它的所有提交都已合并。
如果MRB有更多提交,并且您想删除b和c,只需执行git rebase -i
:这将在交互模式下重新绑定MRB,允许您删除提交b和c,保留其他提交。强制推送MRB,您可以继续处理修复B.