我有一个简单的git-svn存储库,并在其上执行了'git svn fetch'。
运行'git log'不会显示更新。我确定有更新,因为它显示'git svn fetch'之后更改的文件,'git svn log'也显示它们。
请注意,我故意将它作为一个简单的回购,所以'git rebase'将无效。 获取所获取的更改的适当命令是什么?
答案 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