确保git远程跟踪分支与远程同步

时间:2013-05-16 19:34:41

标签: git

我有一个原产地和上游遥控器的回购。通常在我的工作流程中 我从上游拉出更改,然后将它们推送到我的原点(在这种情况下, 我的上游是我公司的GitHub组织的回购,规范的回购,以及 我的起源是我的分支。)

问题是我的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分支是在commit 2,197ac91(我可以通过访问它的github页面或重新克隆repo来验证),那么为什么不是{{1在我的仓库中upstream/master上的远程跟踪分支?我的回购中197ac91远程跟踪分支移动的唯一时间是我推送它。如何让它反映上游仓库中主分支的实际位置?

这是我的upstream/master

.git/config

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

2 个答案:

答案 0 :(得分:1)

这主要是猜测,但是根据您的修改和git-pull-origin-master-does-not-update-origin-master,您似乎指定了

git pull upstream master

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

从另一个帖子看,您应该使用{{1}}来更新本地分支。

答案 1 :(得分:0)

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