git合并是否适用于远程分支?

时间:2017-11-11 15:56:52

标签: git

虽然git pull myremote mybranch工作正常但我无法发现如何git merge myremote mybranch

首先,这是有问题的遥控器:javadba

$ git remote
javadba
origin

这是有问题的远程/分支:javadba/memfix

`git fetch --all`

刚刚执行,发现了一堆远程更新。请注意,当前的git repo是目前在该特定的远程/分支上:

   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 repo上有一些微妙的错误(但是git fetchgit pull仍然正常工作?)

对其中任何一个的任何见解?

1 个答案:

答案 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