git-svn 有没有办法确定我前面或后面有多少次提交?
谢谢!
不是直接的。但是,您可以做的是从 Subversion 存储库的本地副本中找出您领先和/或落后的距离。
因此,首先git svn fetch
要更新您的本地存储库,然后从那里开始。
要找出您当前所在的分支中有多少提交,但尚未提交到 Subversion 服务器,有很多技巧,但最明显的一个是运行git svn dcommit --dry-run
,并查看有多少提交列出要推送到 Subversion。
短版:运行git svn dcommit --dry-run | grep diff-tree | wc -l
。
要计算 Subversion 存储库中有多少提交,而不是在您正在处理的分支中,您需要首先计算或知道您正在使用的 Subversion 分支的名称。您可能可以从 的第一行git svn dcommit --dry-run
或从git log -1 --grep git-svn-id
.
假设您的分支是master
,而父 Subversion 分支是remotes/svn/trunk
。然后,您可以运行git svn rev-list master..remotes/svn/trunk | wc -l
以计算远程主干中而不是您的分支中的所有提交。
作为上述所有方法的替代方法,当您创建分支时,将其指定为跟踪 Subversion 分支。例如,当我基于远程主干创建本地分支时,我创建它的方式如下:
git checkout -b new-branch-name -t remotes/svn/trunk
现在,每当我执行git status
orgit checkout new-branch-name
时,输出都会包含一条线,告诉我每个分支相对于另一个分支的前后距离。
对于已经存在的分支,您可以将其设置为跟踪 Subversion 分支,如下所示:
git branch --set-upstream existing-branch remotes/svn/trunk
在 git >= 1.9 中,似乎有一个错误阻止使用--set-upstream/--set-upstream-to
它在 git 2.23.0 中对我也不起作用
解决方法是手动修改 .gitconfig:how-to-set-upstream-branch-in-git-svn