2013-05-31 19 views
150

我剛剛在git中將分支合併到master時遇到問題。首先,我通過運行git ls-remote來獲得分支名稱。我們稱該分支爲「分支名稱」。然後我跑git merge branch-name命令,並得到以下結果:如何解決git的「不是我們可以合併的東西」錯誤

fatal: branch-name - not something we can merge 

如何解決這個問題?

回答

192

How does "not something we can merge" arise?所示,由於您試圖拉取不存在的分支,因此分支名稱中的拼寫錯誤可能導致此錯誤。

如果這不是問題(與我的情況一樣),那麼很可能您沒有要合併的分支的本地副本。 Git需要兩個分支的本地知識才能合併這些分支。您可以通過檢出要合併的分支並返回到要合併到的分支來解決此問題。

git checkout branch-name 
git checkout master 
git merge branch-name 

這應該工作,但是如果你收到一個錯誤說

error: pathspec 'remote-name/branch-name' did not match any file(s) known to git. 

你需要獲取遠程(可能,但不一定是「原產地」)檢出的分支前:

git fetch remote-name 
+0

添加新的遠程設備後,發生了這種情況 - 在合併遠程分支之前,我需要首先執行git fetch。 – Jason

+0

從遠程獲取並檢出分支。 git fetch && git checkout分支名稱 –

+1

發生在我身上的時候,當我被誤入錯誤的項目(即它是一個不同的回購,甚至沒有我想合併的分支) – JoelFan

57

這是一個愚蠢的建議,但要確保在分支名稱中沒有錯字!

+3

沒有那麼愚蠢,因爲「打字錯誤」可能會降低分支還沒有被提取的事實(因此在本地是未知的)。Git做的事情與CVS或SVN不同。 – klang

+2

如果問題也可能導致分支名稱包含逗號(,)或撇號(')等字符。 – AxeEffect

+0

對我來說,我的問題實際上已經用這個答案解決了,這很愚蠢。 :) –

3

我得到了這個錯誤,當我做了git merge BRANCH_NAME "some commit message" - 我忘了爲提交消息添加-m標誌,所以它認爲分支名稱包括評論。

2

如果包含引用的字符串是由其他Git命令(或任何其他shell命令)生成的,請確保它最後不包含回車。在將字符串傳遞給「git merge」之前,您必須將其去掉。

請注意,這是很明顯,當出現這種情況,是因爲在兩行的錯誤消息:

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9 
- not something we can merge 
+3

請在評價答案時提供評論。也許這不是原始海報的問題,但它可能是錯誤信息的原因(我自己有問題)。 – ocroquette

13

我有這個問題爲好。該分支看起來像'用戶名/主'這似乎混淆git,因爲它看起來像我定義的遠程地址。對我來說使用這個

git merge origin/username/master 

工作得很好。

+0

這對我有用。我把遠程名稱與分支名稱混淆了。 – Steve

+0

我不得不在遠程分支的名稱前加'origin /'。 – AsGoodAsItGets

1

對於後人:就像AxeEffect說的...如果你沒有錯別字檢查你的本地分支名稱中是否有荒謬的字符,如逗號或撇號。剛纔那件事發生在我身上。

+0

或下劃線。 +1 –

39

當從遠程上游拉動,git fetch --all爲我做的伎倆:

git remote add upstream [url to the original repo] 
git checkout [branch to be updated] 
git fetch --all 
git merge upstream/[branch to be updated] 

在其他情況下,我找到了「不是我們可以合併」的錯誤也會發生如果遠程(原產地,上游)分支不存在。這可能看起來很明顯,但是你可能會發現自己在只有master的回購協議上執行git merge origin/develop

+2

我真的不知道爲什麼這個答案沒有獲得與上面一樣多的選票。 'git fetch -all'是在合併遠程分支之前通常沒有運行的命令,並且解決了我的問題。 –

+1

因爲抓取不會自動拖動,所以您必須手動執行此操作。所以一對 - 所有和拉 - 所有將做的伎倆。 – danielpopa

+0

謝謝! 'git remote add upstream'是我失蹤的重要事情,爲我解決了這個問題。我認爲一個常見的錯誤是假設一個分支自動知道它從哪裏分出來。 – Brent

1

我建議檢查您是否能夠切換到您嘗試合併的分支。

即使我想合併的分支位於本地存儲庫中,但沒有拼寫錯誤,我得到了此錯誤。

我忽略了我的本地更改,以便我可以切換到分支(存儲或提交也可以是首選)。在此之後,我切換回初始分支,合併成功。

4

您正在收到此錯誤,因爲您要合併的分支在您的本地存儲庫中不存在。

所以,首先結賬要通過以下命令將合併到主分支BRACH:

git checkout branch_name_to_merge 

在此之後嘗試通過以下命令主分支合併它:

git merge branch_name_to_merge 
+1

這也可能發生,如果你不注意你的分支的名稱(即拼寫錯誤:) :) – rdev5

+0

這對我有效。當我在Atom中使用Git選項卡工作時,我使用下拉菜單切換分支,有時我必須轉到命令行並檢查分支 – nzaleski

1

我們得到了這個錯誤,因爲我們在分支名稱中有一個逗號(,)。我們刪除了本地分支,然後用一個沒有逗號的新名稱重新檢查它。我們能夠成功地合併它。

+0

下劃線也似乎有問題。+1 –

+0

我經常在分支名稱中使用下劃線@AndersLindén – nzaleski

-1

我試過 git merge「Commit-message」,而不是 git merge -m「Commit-message」。

0

對我來說,問題發生時,我嘗試這樣做:

git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop 

所以,其實我應該寫master代替develop,因爲主人子樹,不是我的實際分支的分支名。

相關問題