【问题标题】:Ensure that git remote tracking branch stays in sync with remote确保 git 远程跟踪分支与远程保持同步
【发布时间】:2013-05-11 20:23:14
【问题描述】:

我有一个带有来源和上游远程的 repo。通常在我的工作流程中 我从上游提取更改,然后将它们推送到我的原点(在这种情况下, 我的上游是我公司的 GitHub 组织的 repo,规范的,并且 我的起源是我的分支)。

问题是我的upstream/master 远程跟踪分支似乎没有 更新为我git pull upstream mastergit fetch upstream master

所以如果我从这样的事情开始:

* d386ff8 (upstream/master, origin/master, master) commit 1

然后运行git pull upstream master && git push origin master,我结束了 像这样:

* 197ac91 (origin/master, master) commit 2
* d386ff8 (upstream/master) commit 1

我知道上游 repo 上的 master 分支在提交 2,197ac91(我可以通过访问其 github 页面或重新克隆 repo 来验证),那么为什么不是 upstream/master 远程跟踪在我的仓库中的197ac91 上分支?我的仓库中的upstream/master 远程跟踪分支唯一一次移动是当我推送到它时。如何让它反映上游 repo 上的 master 分支实际在哪里?

这是我的.git/config

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    url = git@github.com:me/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "upstream"]
    url = git@github.com:mycompany/repo.git
    fetch = +refs/heads/*:refs/remotes/upstream/*

更新:这似乎与this question 重复。我可以通过运行git fetch upstream 来解决我的问题。显然,出于某种原因,将master 添加到该命令的末尾会阻止更新本地远程跟踪分支。

【问题讨论】:

  • 你怎么知道 upstream/master 在提交 2 上?
  • @jex 我在它的 GitHub 页面上验证了
  • @jex 我也可以通过重新克隆 repo 来验证

标签: git


【解决方案1】:

如果您不推送到 upstream,并且没有其他人推送您的更改,那么 upstream 可能尚未更新您的最新提交。

【讨论】:

  • 对不起,我回过头来澄清了问题。我知道上游仓库的主分支实际上是在提交 2 上,但由于某种原因,当我运行 git log 时,它没有显示在我的本地仓库中。
【解决方案2】:

这主要是推测,但从您的编辑和git-pull-origin-master-does-not-update-origin-master 来看,似乎您指定时

git pull upstream master

git 注意到你已经指定了从upstream 获取,然后它注意到你想要更新master 分支。但不是从upstream/master 更新,而是看到master 拥有远程origin,而是从那里更新。

从另一个线程看来,您应该使用 git pull upstream/master 来更新您的本地分支。

【讨论】:

    猜你喜欢
    • 2014-08-22
    • 2014-02-04
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2021-02-09
    • 2019-08-14
    • 2018-02-12
    相关资源
    最近更新 更多