【问题标题】:Why can't I pull from my remote branch?为什么我不能从远程分支中拉取?
【发布时间】:2016-09-25 23:14:02
【问题描述】:
[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

我最初创建了这个分支,并且一直在推动它一段时间。虽然昨天我确实从另一个分支变基到我的分支所以也许这搞砸了?

【问题讨论】:

    标签: git branch git-rebase git-pull


    【解决方案1】:

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

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

    • 可能无法自动发生,中途停止,需要您的帮助;
    • 产生"foxtrot merges",这是一种倒退,只要它进行真正的合并;
    • 通常最好使用git rebase。

    git pull 的前半部分是git fetch,因此您可以只运行git fetch,然后在成功后根据需要运行git merge 或git rebase。这两个命令都采用比git pull 更合理的参数。

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

    同时使用git merge 和git rebase,您可以将origin/myBranch 远程跟踪分支命名为,或者让Git 再次确定它。

    话虽如此,git pull 通常也会自行解决所有这些问题。特别是如果git merge 或git rebase 可以使用origin/myBranch,git pull 可以使用origin 和origin/myBranch 进行两个步骤。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我今天刚刚发现 git pull origin 分支没有像我预期的那样工作......在我这样做之后,我总是检查我的 sha 是否与 git branch -a -五。但他们不是......所以我检查了我的本地版本的远程分支并做了一个 git pull ......它更新了.. 然后我回到我一直在工作的分支并做了一个 git pull origin 分支再次,这次有更新......所以它几乎就像 git pull origin 分支只查看我的本地分支副本...... wth?
      猜你喜欢
      • 2015-07-12
      • 1970-01-01
      • 2018-09-13
      • 2020-06-10
      • 2012-03-03
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2011-10-10
      相关资源
      最近更新 更多