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

vja*_*gus 10 git-svn

我有一个简单的git-svn存储库并对其进行了'git svn fetch'.

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

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

Jen*_*man 17

A 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
Run Code Online (Sandbox Code Playgroud)

并且您将再次与上游存储库保持同步.

按照vjangus的建议将master的head的ref设置为git-svn head也可以使这个工作,但你不应该在远程分支中进行更改.


Ceb*_*yre 8

尝试git log git-svn- 我没有一个简单的回购,但我只是运行git svn fetch,标准git log给了我当前(重新定位)的日志,但使用git-svn arg(除了master之外的另一个分支,git branch -a在我的case)我得到登录到获取的修订版


vja*_*gus 6

我找到了答案,

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

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