2013-04-17 67 views
1

想象一下,我分叉了一個Github存儲庫,並在做出許多更改之後,發現無法自動合併我的請求。在不克隆的情況下使用Github存儲庫(合併,重置)

但我不想克隆母本庫到我的本地驅動器爲了reset --hardmerge -f。這裏

我的主要問題是遙控器 - 我似乎無法找到一個方法來遠程引用添加到像Github的API,因此我可以在我的遠程倉庫不能合併成我原本分叉父庫從。

告訴我,如果我不清楚,我很樂意編輯我的問題。

+1

你幾乎被洗淨。以此爲教訓,始終保持您的所有回購更新。或者更好的是將它們提煉成一個回購。祝你好運! – jakenberg

+0

這並不是那麼糟糕,我總是可以將兩個版本複製到不同的文件,並在我的磁盤上工作,但我希望有更好的選擇。 –

+0

無論你做什麼,你最終都會手動合併一些文件。根據兩個回購站距離彼此有多遠,你需要進行大量的合併才能完成... – jakenberg

回答

3

我不完全確定你在問什麼。首先,你不合並倉庫,你合併分支。存儲庫只保存分支和與它們相關的提交。其次,爲了將遠程添加到本地存儲庫,您不需要與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需要一個工作樹,以防萬一出現合併衝突。但你真的不需要它在你的情況。一旦合併了上游主分支,您就可以毫無問題地推動分支。

+0

好吧,顯然我的問題沒有正確說明。我想合併到的分支是未克隆的分支,而基本分支*是*克隆的。所以基本上我想要做的就是'git merge master/upstream'。謝謝你的好回答,給你一個滿意的答覆。 –

+0

我仍然確定我理解你。我想你是說你的回購中有一個本地分支,它是由遠程存在的分支創建的(可能是'master'?)。無論您的分支是否存在於遠程,上述流程都可以正常工作。這聽起來像你有其他方面,你正在尋找答案......你能詳細說明一點嗎? – jszakmeister

+0

這應該是仍然*不*確定... – jszakmeister

相關問題