【问题标题】:why git fetch origin master failed?为什么 git fetch origin master 失败了?
【发布时间】:2014-01-18 10:55:13
【问题描述】:

假设我的本地仓库是 github 仓库后面的一次提交。

然后我在本地仓库提交一个提交

此时

A----->commit 1 Github/master

A----->提交 2 个本地存储库/主库

我执行以下步骤将提交 2 推送到 github:

  1. git fetch origin master
  2. git rebase origin/master
  3. git push origin master

但我收到以下错误:

如果我尝试将步骤 1 替换为 git fetch origin,则效果很好

然后我尝试git fetch origin master:tmp,成功创建了一个名为tmp的分支

所以,我的问题是

为什么git fetch origin master 有时有效(在git fetch origin master:tmp 的情况下),而有时在第1 步的情况下无效?

【问题讨论】:

  • 您确定git rebase origin/master 成功了吗?似乎不是。也许你可以显示它的输出。
  • @janos 请看我的更新
  • 你使用的是什么版本的 Git?
  • 几乎,但不完全是 this 的副本。我猜这是 Git
  • @Charles0429 请也显示git status 的输出

标签: git github


【解决方案1】:

这不是关于工作与否,而是关于你在哪里询问 git store 它下载了什么。如果你在 refpec 中省略了目标,你是在要求 git 将它存储在 FETCH_HEAD 中。因此,git fetch origin master 真的是 git fetch origin master:FETCH_HEAD,而您根本没有触及 origin/master 或任何引用(从输出中可以看到,master -> FETCH_HEAD)。

当您运行git fetch origin master:tmp 时,您要求它下载主分支(这是另一层,猜测您要处理分支)并将其存储在名为tmp 的本地分支中。您还会在输出中看到此映射。

如果您想更新远程跟踪分支,只需调用git fetch origin。调用git-fetch 的两个参数版本很少是您想要做的事情。

【讨论】:

    【解决方案2】:

    代替

    git fetch origin master
    git rebase origin/master
    

    你应该这样做

    git pull --rebase
    

    这会做正确的事。

    【讨论】:

    • 如果master的上游分支设置为origin/master,它会做“正确的事情”,这可能是也可能不是。
    猜你喜欢
    • 2020-07-27
    • 2012-09-21
    • 2013-02-08
    • 2014-02-27
    • 2013-09-02
    • 2017-02-11
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多