Merging between forks in GitHub
我创建了一个Github存储库。然后我把一些零钱推到我的叉子上。然后原始存储库合并了我的更改和其他一些更改。现在,我想合并那些我丢失的更改。我尝试了一个简单的拉,然后是推,但这让我的承诺重复了。最好的方法是什么?
您可能对每个存储库都有一个"远程"。您需要从一个遥控器中拔出并推到另一个遥控器。
如果您最初是从您的fork克隆的,那么这个遥控器将被称为"origin"。如果尚未添加,则需要将第一个人的存储库添加为另一个远程:
1 | git remote add firstguy git://github.com/firstguy/repo.git |
在一切就绪之后,你真的应该能够
1 2 | git pull firstguy master git push origin |
号
记住,
当然,Github,以其永恒的敬畏,给了你一条捷径。在存储库的分支上有一个"快进"按钮,如果完全合并到另一端,可以使用它来捕获分支。
所以上面接受的答案对我来说并不完美。也就是说,当它工作时,它似乎失去了与原来的Github作者的链接,之后似乎不再工作了。我认为问题在于答案遗漏了远程名称和分支之间的/问题。因此,它将从远程获取一个名为master的分支,但随后将无法对其执行任何操作。不太清楚为什么。
以下是Github在其网站上推荐的方式。
一旦克隆了分叉回购,您就需要添加一个指向原始回购的远程设备,就像前面的答案所说的那样。他们喜欢称之为上游,但这并不重要。
1 | git remote add upstream git://github.com/octocat/Spoon-Knife.git |
然后你去拿
1 | git fetch upstream |
。
您将看到可用于合并的版本
1 2 3 | From git://github.com/octocat/Spoon-Knife.git * [new branch] gh-pages -> upstream/gh-pages * [new branch] master -> upstream/master |
然后您只需要选择要合并的分支。请注意,这些不是本地分支,它们存储在远程设备下。但是如果您没有一个名为upstream/master的本地分支(这是允许的),您应该可以很好地与下面的行合并:
1 | git merge upstream/master |
。
或者,您可以将提取/合并(至少在初始提取之后)快捷方式设置为:
1 | git pull upstream/master |
。