如何在裸机上'git svn fetch'后更新'git log'?

时间:2009-09-15 03:47:49

标签: git-svn

我有一个简单的git-svn存储库,并在其上执行了'git svn fetch'。

运行'git log'不会显示更新。我确定有更新,因为它显示'git svn fetch'之后更改的文件,'git svn log'也显示它们。

请注意,我故意将它作为一个简单的回购,所以'git rebase'将无效。 获取所获取的更改的适当命令是什么?

3 个答案:

答案 0 :(得分:17)

git svn fetch添加了一个名为remotes / git-svn的新远程分支(如git branch -a所示)。

如果您对上游svn进行了更改,然后再次运行git fetch,则会在此分支上拉取(实际上,已获取)更改,而不是在master上。

因此,为了使git log(以及其他所有内容)在master分支上正常工作,你只需要一个合并,就像你通常在获取之后必须做的那样(这是git pull做的,一个fetch然后一个合并)

由于git svn pull不起作用,您必须手动合并它。在主分支上,运行:

git merge remotes/git-svn

这会将你的主分支与git-svn分支合并,使一切恢复正常。

所以将来,运行

git svn fetch
git merge remotes/git-svn

您将再次与上游存储库保持同步。

按照vjangus的建议将主人头的ref设置为git-svn head也会使这项工作成功,但你不应该在远程分支中进行更改。

答案 1 :(得分:8)

尝试git log git-svn - 我没有裸仓库,但我只是运行git svn fetch,标准git log给了我当前(重新定位)的日志,但是git-svn arg(除了master之外的另一个分支,在我的例子中由git branch -a标识)我得到登录到获取的版本

答案 2 :(得分:6)

我找到了答案,

git symbolic-ref refs / heads / master refs / remotes / git-svn

感谢Steven Walter的评论 http://gsocblog.jsharpe.net/archives/12