为什么我无法从远程分支机构中拔出?

时间:2016-05-27 14:47:11

标签: git branch git-rebase git-pull

[console]: git remote -v
origin git@testServer.com:myProj/myProj.git(fetch)
origin git@testServer.com:myProj/myProj.git(push)

[console]: git branch -a
*myBranch
development
remotes/origin/myBranch
remotes/origin/development

[console]: git pull origin/myBranch myBranch
fatal: 'origin/myBranch' does not appear to be a git repository
fatal: Could not read from remote repository

我最初创建这个分支并且已经推出了一段时间。虽然昨天我确实从另一个分支机构进入了我的分支,所以也许这搞砸了什么?

2 个答案:

答案 0 :(得分:7)

您的语法错误:它是git pull [ remote [ branch-name ] ],而不是git pull remote/branch-name branch-name。在这种情况下,您需要git pull origin myBranch

那就是说,我建议使用git pull,至少在你非常熟悉Git之前。原因是git pull做了两件事,第二件事就是运行git merge,其中:

  • 可能无法自动发生,停在中间,需要您的帮助;
  • 只要它真正合并,
  • 就会产生"foxtrot merges",这是一种倒退;
  • 通常最好以git rebase完成。

git pull的前半部分为git fetch,因此您只需运行git fetch,然后在成功后运行git mergegit rebase期望。这两个命令都比git pull采用更明智的参数。

使用git fetch,您可以命名要从中获取的遥控器,例如git fetch origin(或者只是让git fetch弄明白:git fetch没有参数通常会弄明白自动使用origin

同时使用git mergegit rebase,您可以命名origin/myBranch远程跟踪分支,或者让Git再次找出它。

所有这些也说,git pull通常也会自行解决所有这些问题。特别是如果git mergegit rebase可以确定使用origin/myBranchgit pull可以使用originorigin/myBranch来实现其两个步骤

答案 1 :(得分:3)

正确的语法是git pull origin myBranch 该命令的第一个参数应该是远程的名称,如错误fatal: 'origin/myBranch' does not appear to be a git repository

所示