我分叉了一个Github存储库,并且做了几天的更改,没有从原始的repo(我做了一个fork的repo)中拉出来。
现在我向原始仓库发出了拉取请求。我发现repo在我分叉之后又得到了另一个提交。
所以我的问题是,如果repo的所有者接受了pull请求,那么他之后的提交会保留还是他的repo会成为我的fork的相同副本?
如果是后者,那么你可以告诉我,我怎么能不删除他所做的提交?
答案 0 :(得分:6)
分支的所有更改都将显示在历史记录中:
A-B------C----M--...
\-X-Y---Z-/
其中X
,Y
和Z
是您的提交,C
是您缺少的提交。提交M
是一个合并提交,它将包含其中的所有更改(并可能修复与C
的任何合并冲突)。您的提交将保持不变,之后M
将包含C
,X
,Y
和Z
的所有更改。
或者,repo维护者可以 rebase 你的分支并在之后合并:
A-B-C---------M--...
\-X-Y-Z-/
当一切正常时,M的状态将与进行常规合并时的状态完全相同。但是,X
,Y
和Z
将分别看起来像是来自C
(他们的SHA1值也会发生变化)。
两种方法同样有效,如果您缺少相当多的提交(即开发几周后),建议使用 rebasing 。
请注意:如果您的分支没有干净地合并并且冲突不容易修复,则repo维护者可能会要求您进行合并或变基。您的工作是提供可合并的分支机构。
在这种情况下,只需获取您正在请求的分支的最新版本并自行尝试合并:
git checkout your-branch
git pull upstream master
或
git checkout your-branch
git pull --rebase upstream master
之后,分支机构将干净地合并到上游。只需为新合并的分支发布一个新的请求。