合并一个提交后面的Pull请求

时间:2013-11-14 11:46:23

标签: git github pull-request git-fork

我分叉了一个Github存储库,并且做了几天的更改,没有从原始的repo(我做了一个fork的repo)中拉出来。

现在我向原始仓库发出了拉取请求。我发现repo在我分叉之后又得到了另一个提交。

所以我的问题是,如果repo的所有者接受了pull请求,那么他之后的提交会保留还是他的repo会成为我的fork的相同副本?

如果是后者,那么你可以告诉我,我怎么能删除他所做的提交?

1 个答案:

答案 0 :(得分:6)

分支的所有更改都将显示在历史记录中:

A-B------C----M--...
   \-X-Y---Z-/

其中XYZ是您的提交,C是您缺少的提交。提交M是一个合并提交,它将包含其中的所有更改(并可能修复与C的任何合并冲突)。您的提交将保持不变,之后M将包含CXYZ的所有更改。

或者,repo维护者可以 rebase 你的分支并在之后合并:

A-B-C---------M--...
     \-X-Y-Z-/

当一切正常时,M的状态将与进行常规合并时的状态完全相同。但是,XYZ将分别看起来像是来自C(他们的SHA1值也会发生变化)。

两种方法同样有效,如果您缺少相当多的提交(即开发几周后),建议使用 rebasing

请注意:如果您的分支没有干净地合并并且冲突不容易修复,则repo维护者可能会要求进行合并或变基。您的工作是提供可合并的分支机构。

在这种情况下,只需获取您正在请求的分支的最新版本并自行尝试合并:

git checkout your-branch
git pull upstream master

git checkout your-branch
git pull --rebase upstream master

之后,分支机构将干净地合并到上游。只需为新合并的分支发布一个新的请求。