簡體   English   中英

Git 從另一個倉庫拉取

[英]Git pull from another repository

我有一個名為Generic的存儲庫,它是一個通用應用程序。 我已經將它分叉到一個名為Acme的存儲庫中,它只是建立在應用程序存儲的Generic存儲庫上,並向其中添加了 Acme Co 品牌。

如果我對Generic的核心功能進行更改,我想用我對Generic的核心功能所做的最新更改來更新Acme存儲庫。 我該怎么做?

據我所知,我基本上是在嘗試將上游存儲庫中所做的更改合並到當前分支中。

如果這意味着什么,我正在嘗試這樣做,因為我有一個通用應用程序,然后我可以在此基礎上為單個客戶構建和品牌化(例如本示例中的Acme )。 如果有更干凈的方法來做到這一點,請告訴我。

在您的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 現在會因為無法找到 repo 而對您大喊大叫(對 Rickroll 感到抱歉,但這是第一個出現在我腦海中的隨機字符串)。

為了從不同的 repo 中提取特定分支,您可以使用以下 git 命令。

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

正如@vin提到的,您可以直接從另一個 repo 拉取而無需添加新的源(假設從另一個 repo 的master分支拉到本地master分支):

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

如果兩個存儲庫的提交歷史沒有鏈接,則需要--allow-unrelated-histories ,但要謹慎使用,因為這意味着您知道自己在做什么。

您還可以push本地存儲庫push送到另一個存儲庫而不將其添加為遠程存儲庫(遠程分支不必存在,因此您可以使用任何您想要的東西,例如master:new_branch ):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM