2017-11-11 229 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