在GitHub中的叉子之间合并

我分叉了一个GitHub仓库。 然后我把一些改变推到我的叉子上。 然后原始的资源库合并我的更改和其他一些。 现在,我想合并那些我错过的改变。 我尝试了一个简单的拉,然后推,但是这产生了我的承诺一式两份。 什么是最好的办法呢?

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

如果您最初从您的叉子克隆,该远程将被称为“起源”。 如果你还没有添加它,你需要添加第一个人的仓库作为另一个远程:

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

这一切都build立之后,你的确应该能够做到

 git pull firstguy master git push origin 

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

当然,GitHub永远都会给你一个捷径。 在仓库的叉子上有一个“快进”button,如果你完全合并到另一边,你可以用它来抓住叉子。

所以上面接受的答案完全不适合我。 也就是说,它似乎失去了原来的github作者的工作,然后似乎没有工作了。 我认为问题是,答案遗漏了远程名称和分支之间的/。 所以它会从远程获取一个叫master的分支,但是不能对它做任何事情。 不知道为什么。

这是github从他们的网站推荐的方式: http : //help.github.com/fork-a-repo/

一旦你克隆你的分叉回购,你需要像前面的回答说的那样,添加一个远程指向原来的。 他们喜欢称之为上游,但没关系。

 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 

那么你只需要select你想合并的分支。注意这些不是本地分支,它们存储在远程。 但是,如果你没有一个叫做upstream / master的本地分支(这是允许的),你应该很好地合并下面的行:

 git merge upstream/master 

或者,您可以使用以下代码行快速获取/合并(至less在初始获取后):

 git pull upstream/master