Git从另一个存储库中拉出


95

我有一个名为的存储库Generic,这是一个通用应用程序。我将其分叉到一个名为Acme的存储Generic库中,该存储库仅建立在应用程序存储的存储库的基础上,并向其添加了Acme Co品牌。

如果我对中的核心功能进行了更改,则GenericAcme使用对中的核心功能进行的最新更改来更新存储库Generic。我该怎么做?

据我所知,我实际上是在尝试将上游存储库中所做的更改合并到当前fork中。

如果有任何意义,我正在尝试执行此操作,因为我有一个通用应用程序,可以Acme在此基础上构建该应用程序并为单个客户创建品牌(如本例所示)。如果有更清洁的方法,请告诉我。

Answers:


135

在您的Acme仓库中发出以下命令。它添加了一个新的远程存储库upstream,该存储库指向存储库Generic

git remote add upstream https://location/of/generic.git

然后,您可以使用以下命令Generic将对所做的任何更改合并到当前分支中Acme

git pull upstream

如果只希望它下载更改而不自动合并,请使用git fetch代替git pull

如果要禁用推送到该存储库,请使用类似以下内容的方式将推送网址设置为无效网址

git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"

现在,Git会对您大喊大叫,如果您尝试继续尝试,将无法找到存储库upstream(对Rickroll感到抱歉,但这是突然出现在我脑海中的第一个随机字符串)。


6
太好了,谢谢。另一件事:有没有办法使此远程只读,所以我不会最终不小心将其压入?
Libbux 2014年

1
我开始回答,但我看到McLovin已经编辑了他的答案以包含该答案。
弗兰基·西蒙

4
从git 2.9开始,您将需要指定--allow-unrelated-histories标志。参见stackoverflow.com/a/37938036/3799847
sfinks_29年

5
我需要发布git pull --allow-unrelated-histories upstream master
Alec Jacobson

我试过了,但是git pull upstream挂了...有什么想法吗?
Paulo Carvalho,

6

为了从不同的仓库中提取一个特定的分支,可以使用下面的git命令。

git pull <git_url> <branch> --allow-unrelated-histories
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.