8

我分叉了一个 Github 存储库并在几天内进行了一些更改,但从未从原始存储库(我创建了一个 fork 的存储库)中提取。

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

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

如果是后者,那你能告诉我我怎样才能删除他所做的提交吗?

4

1 回答 1

10

两个分支的所有更改都将出现在历史记录中:

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

where X, YandZ是您的提交,并且C是您缺少的提交。提交M是一个合并提交,其中将包含您的所有更改(并可能修复与 的任何合并冲突C)。您的提交将保持不变,之后M将包含来自CXY的所有更改Z

或者,repo 维护者可以重新设置您的分支并在之后合并它:

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

当一切顺利时,M 的状态将与进行常规合并时完全相同。但是X,YZ将被单独制作成它们的来源C(它们的 SHA1 值也会改变)。

这两种方法同样有效,如果您遗漏了相当多的提交(即经过几周的开发),建议使用rebase 。

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

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

git checkout your-branch
git pull upstream master

或者

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

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

于 2013-11-14T11:59:07.257 回答