Git 从另一个存储库拉取

问题描述 投票:0回答:3

我有一个名为

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

如果我对

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

据我所知,我本质上是在尝试将上游存储库中所做的更改合并到当前的分支中。

如果这意味着什么的话,我正在尝试这样做,因为我有一个通用应用程序,然后我可以在该应用程序的基础上为个人客户构建和品牌化(就像本例中的

Acme
)。如果有更干净的方法,请告诉我。

git version-control repository dvcs
3个回答
205
投票

在您的

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
,Git 现在会向你大喊找不到存储库(对 Rickroll 感到抱歉,但这是我脑海中弹出的第一个随机字符串)。


42
投票

为了从不同的存储库中提取特定分支,您可以使用以下 git 命令。

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

7
投票

正如 @vin 提到的,您可以直接从另一个存储库

git pull
而无需添加新的源(假设从另一个存储库的
master
分支拉到本地
master
分支):

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

# OR pull to a new local branch
git pull https://some-other-repo.git master:new_local_branch

如果两个存储库的提交历史未链接,则需要

--allow-unrelated-histories
,但请谨慎使用它,因为这意味着您知道自己在做什么。

您还可以

git push
将本地存储库转移到另一个存储库而无需将其添加为远程存储库:

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

# OR create a new branch on remote
git push https://some-other-repo.git master:new_remote_branch
© www.soinside.com 2019 - 2024. All rights reserved.