想象一下,我分叉了一個Github存儲庫,並在做出許多更改之後,發現無法自動合併我的請求。在不克隆的情況下使用Github存儲庫(合併,重置)
但我不想克隆母本庫到我的本地驅動器爲了reset --hard
或merge -f
。這裏
我的主要問題是遙控器 - 我似乎無法找到一個方法來遠程引用添加到像Github的API,因此我可以在我的遠程倉庫不能合併成我原本分叉父庫從。
告訴我,如果我不清楚,我很樂意編輯我的問題。
想象一下,我分叉了一個Github存儲庫,並在做出許多更改之後,發現無法自動合併我的請求。在不克隆的情況下使用Github存儲庫(合併,重置)
但我不想克隆母本庫到我的本地驅動器爲了reset --hard
或merge -f
。這裏
我的主要問題是遙控器 - 我似乎無法找到一個方法來遠程引用添加到像Github的API,因此我可以在我的遠程倉庫不能合併成我原本分叉父庫從。
告訴我,如果我不清楚,我很樂意編輯我的問題。
我不完全確定你在問什麼。首先,你不合並倉庫,你合併分支。存儲庫只保存分支和與它們相關的提交。其次,爲了將遠程添加到本地存儲庫,您不需要與GitHub API交互。我建議不要將遠程設備添加到遠程存儲庫,因爲它不會自動保持最新狀態。
我通常做的是遠程添加新upstream
到我的本地庫:
git remote add upstream <url-to-parent>
取得更新引用:
git fetch upstream
現在,你必須從父訪問最新數據庫。好的部分是存儲庫中的大部分對象都將被重用,所以你不會有完全獨立的副本。現在您可以通過upstream
遠程訪問家長回購中的內容。例如,你可以在最新版本的高手合併父庫:
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是你和上游之間所有合併和分辨率發生的地方。您不能直接合併到遠程參考中,因爲沒有與其關聯的分支(本地)。 git merge
需要一個工作樹,以防萬一出現合併衝突。但你真的不需要它在你的情況。一旦合併了上游主分支,您就可以毫無問題地推動分支。
好吧,顯然我的問題沒有正確說明。我想合併到的分支是未克隆的分支,而基本分支*是*克隆的。所以基本上我想要做的就是'git merge master/upstream'。謝謝你的好回答,給你一個滿意的答覆。 –
我仍然確定我理解你。我想你是說你的回購中有一個本地分支,它是由遠程存在的分支創建的(可能是'master'?)。無論您的分支是否存在於遠程,上述流程都可以正常工作。這聽起來像你有其他方面,你正在尋找答案......你能詳細說明一點嗎? – jszakmeister
這應該是仍然*不*確定... – jszakmeister
你幾乎被洗淨。以此爲教訓,始終保持您的所有回購更新。或者更好的是將它們提煉成一個回購。祝你好運! – jakenberg
這並不是那麼糟糕,我總是可以將兩個版本複製到不同的文件,並在我的磁盤上工作,但我希望有更好的選擇。 –
無論你做什麼,你最終都會手動合併一些文件。根據兩個回購站距離彼此有多遠,你需要進行大量的合併才能完成... – jakenberg