【发布时间】:2011-11-13 23:47:04
【问题描述】:
所以情况是这样的:
$ git 状态
# 在分支主
# 你的分支在 'origin/master' 之前 [x] 次提交。
#
已经有几个关于这个的问题,但似乎没有一个专门解决我所拥有的场景类型。 This answer 最接近其中一个问题,但没有详细说明。
我将逐字引用:
如果您在执行“git pull remote branch”后收到此消息,请尝试使用“git fetch”跟进。
Fetch 似乎更新了远程分支的本地表示,当您执行“git pull remote branch”时不一定会发生这种情况。
这个技巧确实有效。但是“不一定会发生?”为什么不?我需要明白这一点。 pull 不做什么?
我不想接手这个问题,所以这是我的详细场景:
涉及三台计算机。我开发的 Mac,我的 git repo(即 origin/master)所在的家庭服务器以及从该服务器提取的 Webfaction 帐户。
我只在 Mac 上提交和git push origin master。作为正常工作流程的一部分,在 Webfaction 上运行的唯一命令是 git pull origin master(作为 Fabric 部署脚本的一部分)。我不在那里修改代码。我是一个孤独的开发者,所以其他人也不是。
我不时登录 Webfaction 并查看内容,包括 git status。不可避免地,我总是收到“你的分支在前面......”的消息。运行 git fetch 会使消息消失。
我将在 Fabric 脚本中添加 git fetch 以解决此问题,但我想知道为什么需要这样做,尤其是在源/主的仅拉式克隆上。尽管我每天都使用基本功能,但我对 Git 的了解并不深入,因此欢迎新手友好的解释。
更新请求,来自config的相关位:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@[server_address]:[path/to/repo.git]
[branch "master"]
remote = origin
merge = refs/heads/master
【问题讨论】:
-
您能否在问题中从 Webfaction 服务器发布您的 git 配置的“来源”部分?我觉得这可能与它有关。
-
请注意,我没有以任何方式修改该配置文件。它是使用来自原始存储库的标准
git clone创建的。 -
请注意,在发布此问题时,Git 的 当前 版本是 1.7.10。
标签: git branch git-push git-pull git-fetch