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