[英]Working with Github repositories (merge, reset) without cloning
想象一下,我已經分叉了一個Github存儲庫,在做了很多更改之后,發現不可能自動合並我的pull請求。
但我不想將母存儲庫克隆到我的本地驅動器以reset --hard
或merge -f
。
我在這里的主要問題是遙控器 - 我似乎無法找到一種方法來添加像Github API這樣的東西的遠程引用,因此我無法將我的遠程存儲庫合並到我最初分叉的父存儲庫中。
告訴我,如果我不清楚,我很樂意編輯我的問題。
我不完全確定你在這里問的是什么。 首先,您不合並存儲庫,合並分支。 存儲庫只保存分支和與它們相關的提交。 其次,為了將遠程添加到本地存儲庫,您不需要與GitHub API進行交互。 我建議不要在您的遠程存儲庫中添加遠程數據庫,因為它不會自動保持最新狀態。
我通常做的是在我的本地存儲庫中添加一個新的upstream
遠程:
git remote add upstream <url-to-parent>
獲取更新的引用:
git fetch upstream
現在,您可以訪問父存儲庫中的最新數據。 好的部分是存儲庫中的大多數對象都將被重用,因此您不會擁有完全獨立的副本。 現在,您可以通過upstream
遠程訪問父回購中的內容。 例如,您可以在父存儲庫中合並最新版本的master:
git merge upstream/master
您還可以在更新的主服務器上重新設置當前的更改集(請注意這一點! ):
git rebase upstream/master
當它是私人分支時,我傾向於選擇后者。 如果有人在我的分支上建立,有時前者是必要的。 如果你沒有處理rebase,你可能不希望這是你第一次使用它。 您需要在壓力較小且受控制的環境中進行實驗。
無論你決定做什么,都要學會處理合並沖突。 大多數都很容易理清,從長遠來看,它將使Git(或任何其他VCS)更好。
更新
在評論中進行了一些討論之后,現在很清楚你想要將你的工作合並到上游。 是的,這完全有可能。 實際上,如果您已將upstream/master
合並到主分支中,那么您真正需要做的就是:
git push upstream master
這會將您的主分支推送到主分支項目的遠程存儲庫。 它應該是一個快速前進的,沒有理由使用--force
。 如果您確實看到一些關於無法快進或使用--force
,請小心。 丟失數據的可能性很大。
在這種模式下,我更喜歡使用git rebase upstream/master
后跟git push upstream master
以避免在日志消息中看到"Merging upstream/master into master"
。 正如我之前提到的, git rebase
確實也有它自己的關注點。
在此模式下,master是您和上游之間發生所有合並和解決的地方。 您不能直接合並到遠程ref,因為沒有與之關聯的分支(本地)。 git merge
需要一個工作樹來工作,以防萬一有合並沖突。 但是在你的場景中你真的不需要它。 合並上游主分支后,您可以毫無問題地推送分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.