我分叉了一个GitHub存储库.然后我把一些更改推到了我的前叉.然后原始存储库合并了我的更改和其他一些.现在,我想合并那些我不知道的变化.我尝试了一个简单的拉动,然后是推送,但是这会让我的提交重复一次.最好的方法是什么?
您可能每个存储库都有一个"远程".您需要从一个遥控器拉出并推到另一个遥控器.
如果你最初从你的fork克隆,那个遥控器将被称为"origin".如果您尚未添加它,则需要将第一个人的存储库添加为另一个远程:
git remote add firstrepo git://github.com/first/repo.git
在完成所有设置之后,您确实应该能够
git pull firstrepo master git push origin
请记住,git pull
无非是做宏更git fetch
和git merge
,按照这个顺序.您只需要从第一个人的存储库中获取提交列表,然后将其分支合并到您的树中.合并应该对两个分支上的提交做正确的事情.
当然,GitHub在其所有永恒的真棒中为您提供了一条捷径.在您的存储库的分支上有一个"快进"按钮,如果您完全合并到另一侧,您可以使用它来捕获您的分叉.
所以上面接受的答案对我来说并不完美.也就是说,它似乎在它工作时失去了与原始github作者的链接,然后在那之后似乎不再起作用了.我认为问题是答案遗漏了远程名称和分支之间的/.因此,它将从远程获取一个名为master的分支,但之后无法对其执行任何操作.不确定为什么.
这是github从他们的网站推荐的方式.
一旦你克隆了你的分叉回购,你需要添加一个指向原始的遥控器,就像之前的回答所说的那样.他们喜欢把它叫做上游,但没关系.
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