Git从另一个存储库拉出来

时间:2014-07-18 01:17:14

标签: git version-control repository dvcs

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

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

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

如果它意味着什么,我试图这样做,因为我有一个通用的应用程序,然后我为个人客户建立和品牌(在本例中像Acme)。如果有更简洁的方法,请告诉我。

3 个答案:

答案 0 :(得分:98)

Acme回购中发出以下命令。它添加了一个名为upstream的新远程存储库,指向Generic存储库。

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

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

git pull upstream

如果您只是希望它在不自动合并的情况下下载更改,请使用git fetch代替git pull

如果要禁用推送到该存储库,请使用类似

的内容将推送URL设置为无效的URL
git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"

如果你试图推进upstream(对Rickroll感到抱歉,但这是第一个突然出现在我头脑中的随机字符串),Git现在会对你大喊大叫无法找到回购。 / p>

答案 1 :(得分:14)

要从其他仓库中提取特定分支,可以使用以下git命令。

git pull <git_url> <branch> --allow-unrelated-histories

答案 2 :(得分:0)

正如 @vin 提到的,您可以直接从另一个存储库拉取而无需添加新的源(假设从另一个存储库的 master 分支拉取到本地 master 分支):

git pull https://some-other-repo.git master:master 

如果两个存储库的提交历史没有链接,则需要 --allow-unrelated-histories,但要谨慎使用,因为这意味着您知道自己在做什么。

您也可以push将本地存储库添加到另一个存储库中,而无需将其添加为远程(远程分支不必存在,因此您可以使用任何你想要的东西,例如 master:new_branch):

git push https://some-other-repo.git master:master