如何在合并请求中删除其他人的提交
我现在遇到一个问题,当我拉一个远程分支。
一旦我解决了所有冲突的情况下,我必须承诺所有的变化。
所以一旦我创建合并请求,它包括所有这些。
因此很难审查。 我只想现在只有我的承诺。
您如何解决这些冲突以便更容易地审查合并请求?
我得到了更多的问题如下:
假设我有2个分支: 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)
问题是:我怎样才能从MR-B
删除c, d
?
Rebase是你正在寻找的东西,而不是合并。
读:
你什么时候使用git rebase而不是git merge?
'git merge'和'git rebase'有什么区别?
如果你只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.