1

git-svn 有没有办法确定我前面或后面有多少次提交?

谢谢!

4

2 回答 2

2

不是直接的。但是,您可以做的是从 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 statusorgit checkout new-branch-name时,输出都会包含一条线,告诉我每个分支相对于另一个分支的前后距离。

对于已经存在的分支,您可以将其设置为跟踪 Subversion 分支,如下所示:

git branch --set-upstream existing-branch remotes/svn/trunk
于 2013-06-10T10:10:45.730 回答
0

在 git >= 1.9 中,似乎有一个错误阻止使用--set-upstream/--set-upstream-to

它在 git 2.23.0 中对我也不起作用

解决方法是手动修改 .gitconfig:how-to-set-upstream-branch-in-git-svn

于 2019-11-20T10:16:31.260 回答