我正在使用git-svn。我怎样才能获得我已经提交到git中的内容列表,但是自上一个git svn dcommit
以来还没有提交到SVN存储库?也就是说,如果我进行dcommit,如何验证即将发送的内容?
答案 0 :(得分:13)
--dry-run
的{{1}}选项对于确切了解Subversion的内容非常有用。特别是具有以下特性的属性:
一般来说,在考虑使用git svn dcommit
之前做git svn rebase
是个好主意,这样你的历史就会被线性化 - 否则合并提交可能在Subversion历史中没有多大意义。 (如果你已经这样做了,那么dcommit
和git log
也将基本相同,但我认为gitk --all
会让你更准确地了解即将发生的事情,即使它更多很难解释。)
答案 1 :(得分:1)
我认为最简单的方法是使用gitk执行此操作。您将需要--all选项来查看所有分支。如果您还没有使用它,只需输入:
gitk --all
您将看到分支的图形视图。当你从SVN更新时,你基本上做了一个rebase(git svn rebase)。这意味着在最后一次SVN提交后,任何未签入SVN的本地提交都将出现在分支上。基本上查看远程SVN中继与主分支之间的提交。
答案 2 :(得分:1)
我使用git log --oneline --graph
:
* aaaaaaa commit message
* bbbbbbb commit message
|\
| * ccccccc commit message
| * ddddddd commit message
| * eeeeeee commit message
|/
* fffffff commit message
|\
...
很容易看到提交aaaaaaa
,bbbbbbb
和fffffff
在当前(主)分支上。下次执行git svn dcommit
时,这些提交已经或将要提交给Subversion。 (提交ccccccc
,ddddddd
,eeeeeee
位于一个单独的分支上,该分支已合并到主服务器中,并且不会作为单独的提交提交给Subversion 。)
答案 3 :(得分:1)
要查看提交列表,这是我的魔力:
git svn dcommit -n | sed 1d | cut -d" " -f3 | xargs -I{} git log --oneline --no-walk {}
输出:
c2e1eff changed a thing
a889dbf changed a second thing
18a4653 undid the second thing-- oops