如何与远程Git存储库同步?

108

我在github上fork了一个项目,并做了一些更改,目前看起来都很好。

与此同时,我fork的那个存储库发生了变化,我想将这些更改合并到我的存储库中。我该如何操作?

5个回答

93

一般来说,git pull已经足够了,但我不确定你选择了什么布局(或者GitHub为你选择了什么布局)。


5
除非你已经配置了远程获取和合并的分支,否则git pull将无法正常工作。 - Abizern
我假设这是在“制作分支”阶段完成的。除非这些信息被丢弃了,否则它们应该仍然存在。 - Šimon Tóth
使用https进行git pull没有成功,但是使用http却成功了...现在我已经更新到最新版本了,谢谢! - George Profenza
@GeorgeProfenza 这样不安全。考虑使用 ssh - JVE999

72

假设他们的更新在主分支(master)上,而你所在的分支是想要将这些更改合并到的分支。

git remote add origin https://github.com/<github-username>/<repo-name>.git
git pull origin master

此外请注意,您需要将合并后的内容推送回您的代码库副本中:

git push origin master

什么平台?看起来像是git的一个依赖项没有完整。 - Mark Hibberd
作为一种解决方法,您也可以使用git协议而不是https,例如:git remote set-url git://github.com/mrdoob/three.js.git - 然后尝试git pull。 - Mark Hibberd
运行在OSX上。我成功地使用git pull http://github.com/mrdoob/three.js.git master获取了它。 - George Profenza
3
命令中有错别字,我认为应该从“original”开始,然后切换到“origin”。 - Benjol
谢谢!这解决了我的“警告:远程 HEAD 指向不存在的引用,无法检出”的错误。 - Jared Burrows
显示剩余3条评论

51

你需要将原始仓库添加为上游。

详细步骤可参考这里:https://help.github.com/articles/fork-a-repo

git remote add upstream https://github.com/octocat/Spoon-Knife.git
git fetch upstream
git merge upstream/master
git push origin master

5
你需要将原始仓库(你所fork的那个)添加为一个远程仓库。
git remote add github (原始仓库的克隆URL)
然后,你需要将更改带入到本地仓库中。
git fetch github
现在,你将拥有所有原始仓库的分支。例如,主分支将是github/master。使用这些分支,你可以自由操作。将它们合并到你的分支中等等。

2
我建议将远程的名称命名为 upstream - vidstige
@vidstige 如果你的代码库有多个远程仓库,这个描述就不够准确了。比如说,我经常在Github和Dropbox上都有一个远程仓库。 - Abizern
嗯,那当然是有意义的。这就是为什么能够自己命名它们是很棒的。请注意,您的设置可能不太常见,通常一个远程分支被称为"origin",代表你的独立分支,而原始代码库则被称为"upstream"。 - vidstige

1
在 Github 的用户界面上,切换到你想要从 fork 中更新的分支。然后只需简单地选择:
fetch upstream

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接