[英]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.