2017-11-11 394 views
0

雖然git pull myremote mybranch工作正常..我不知道該怎麼辦git merge myremote mybranchgit合併工作與遠程分支?

首先這裏是有問題的遠程:javadba

$ git remote 
javadba 
origin 

這裏是有問題的遠程/分支:javadba/memfix

`git fetch --all` 

剛剛執行,發現一堆遠程更新。請注意當前的混帳回購協議是目前在那個特定的遠程/分支:

54ee844..5162513 memfix  -> javadba/memfix 
* javadba/memfix 
    master 
    memfix 
    remotes/javadba/master 
    remotes/javadba/memfix 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 
    remotes/origin/memfix 

下已經嘗試:

git merge myremote/mybranch

$ git merge javadba/memfix 
warning: refname 'javadba/memfix' is ambiguous. 
Already up-to-date. 

git merge myremote mybranch

$ git merge javadba memfix 
merge: javadba - not something we can merge 

git merge

$ git merge 
fatal: No remote for the current branch. 
$ git checkout javadba/memfix 
warning: refname 'javadba/memfix' is ambiguous. 
M bin/runservers.sh 
M bin/startStopServers.sh 
M tensorflow/GpuClient.scala 
Already on 'javadba/memfix' 

我已經通過這項工作已經在先前的一套遠程更新:在git pull有正確的結果..但我不得不已經git fetch --all,這樣真的不應該是必要的..?

兩種可能性浮現在腦海中:

  • git merge remotebranch/localbranch不工作,我的思考方式
  • 有一些細微的不對勁上我的本地git倉庫(但其git fetchgit pull仍然正常工作?)

對這兩者之一有何洞見?

+0

是的,你可以合併一個遠程跟蹤分支。 –

+0

TL; DR我無意中創建了一個分支'javadba/memfix' - 所以'git merge'命令實際上並未實際應用於* remote *分支:請參閱接受的答案。 – javadba

+0

發表評論後,我看到了答案。很高興你知道這個問題。我建議你做一些關於遠程跟蹤分支的進一步閱讀,這是你稱之爲「遠程分支」的正確名稱。差別很小但很重要。 –

回答

2

git-merge命令採用一個(或多個)分支(或標記或提交哈希...)的參數並將它們合併到當前分支中。

因此,假設你在你想合併到的分支中,這個命令應該可以合併遠程分支。

$ git merge javadba/memfix 

但是,唉,這不,因爲你有一個名爲javadba/memfix一個本地分支,所以git不知道是否要合併遠程分支remotes/javadba/master或當地分支機構javadba/master。 以遠程名稱和斜槓開頭命名本地分支通常是一個壞主意,也許你意外地做了這個事情?

在這種模糊不清的情況下,您可以使用分支的全名解決此問題。這是.git/refs下的文件名,從refs/...開始。例如,您的命令來合併遠程分支將是:

$ git merge refs/remotes/javadba/memfix 

或合併同名的地方分支:

$ git merge refs/javadba/memfix 

而且你或許應該刪除本地分支,與:

$ git branch -d refs/javadba/memfix 
+0

'javadba'是遠程的名稱:查看更新的OP,顯示'git remote'的輸出。根據這些信息,您的答案是否準確? – javadba

+1

@javadba:我會說我還是對的。遠程是'javadba'好的,但它並不妨礙你創建一個名爲'javadba/memfix'的本地分支或標籤。它只會讓人困惑。你可以用'git branch -a'來檢查一下。通常的輸出會有遠程分支'remotes/javadba/memfix'和本地跟蹤分支'memfix',但我敢打賭你也有一個本地分支'javadba/memfix'。 – rodrigo

+0

好吧,你是對的。那麼我必須重新追溯我創建分支的步驟。感謝和獎勵。 – javadba