在GitHub中合并分叉

时间:2009-07-14 03:40:14

标签: git github

我分叉了一个GitHub存储库。然后我把一些更改推到了我的前叉。然后原始存储库合并了我的更改和其他一些。现在,我想合并那些我不知道的变化。我尝试了一个简单的拉动,然后是推送,但这会让我的提交一式两份。最好的方法是什么?

2 个答案:

答案 0 :(得分:343)

每个存储库可能都有一个“远程”。您需要从一个遥控器拉出并推到另一个遥控器。

如果您最初从您的分叉克隆,该遥控器将被称为“原始”。如果您尚未添加它,则需要将第一个人的存储库添加为另一个远程:

git remote add firstguy git://github.com/firstguy/repo.git

在完成所有设置之后,你应该能够

git pull firstguy master
git push origin

请记住,git pull只不过是按此顺序执行git fetchgit merge的宏。您只需要从第一个人的存储库中获取提交列表,然后将其分支合并到您的树中。合并应该对你在两个分支上的提交做正确的事情。

当然,GitHub永远都会为您提供快捷方式。在你的存储库的叉子上有一个“快进”按钮,如果你完全合并到另一边,你可以用来抓住你的叉子。

答案 1 :(得分:71)

所以上面接受的答案对我来说并不完美。也就是说,它似乎在它工作时失去了与原始github作者的链接,然后在那之后似乎不再起作用了。我认为问题是答案遗漏了远程名称和分支之间的/。因此,它将从远程获取一个名为master的分支,但之后无法对其执行任何操作。不太清楚为什么。

这是github recommends from their site的方式。

一旦你克隆了你的分叉回购,你需要添加一个指向原始的遥控器,就像上一个回答所说的那样。他们喜欢把它叫做上游,但没关系。

git remote add upstream git://github.com/octocat/Spoon-Knife.git

然后你获取

git fetch upstream

您将看到可用于合并的版本

From git://github.com/octocat/Spoon-Knife.git
 * [new branch]      gh-pages   -> upstream/gh-pages
 * [new branch]      master     -> upstream/master

然后你只需要选择要合并的分支。请注意,这些不是本地分支,它们存储在遥控器下。但是如果你没有一个名为upstream / master(允许)的本地分支,你可以很好地合并下面的一行:

git merge upstream/master

或者,您可以使用以下行快捷方式获取/合并(在初始提取之后):

git pull upstream/master
相关问题