如何在合并请求中删除其他提交

时间:2016-10-25 04:11:04

标签: git github gitlab

当我拉远程分支时,我现在遇到了问题。

一旦我在冲突的情况下解决了所有问题,我必须提交所有更改。

因此,一旦我创建了合并请求,它就包含了所有这些请求 因此很难审查。我现在只想提交我的提交。

为了使合并请求更容易被审核,您将如何解决这些冲突?

我得到的问题如下:

我们说我有两个分支:A has commits (a, b) B has commits (c, d)。我还创建了合并请求(MR)(MR-AMR-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

2 个答案:

答案 0 :(得分:2)

答案 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.