如何查看已检入git的内容,但尚未通过dcommit提交给svn?

时间:2011-05-18 01:06:14

标签: svn git git-svn commit

我正在使用git-svn。我怎样才能获得我已经提交到git中的内容列表,但是自上一个git svn dcommit以来还没有提交到SVN存储库?也就是说,如果我进行dcommit,如何验证即将发送的内容?

4 个答案:

答案 0 :(得分:13)

--dry-run的{​​{1}}选项对于确切了解Subversion的内容非常有用。特别是具有以下特性的属性:

  • 它实际上没有向Subversion提交任何内容
  • 它告诉您将计算哪些差异以在Subversion中创建新修订
  • 它告诉你你将提交Subversion中的哪个分支 - 这有时是不明显的,因为它是从第一个祖先提交中指定的Subversion分支中获取的,其提交消息中带有git-svn-id

一般来说,在考虑使用git svn dcommit之前做git svn rebase是个好主意,这样你的历史就会被线性化 - 否则合并提交可能在Subversion历史中没有多大意义。 (如果你已经这样做了,那么dcommitgit 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 
|\  
...

很容易看到提交aaaaaaabbbbbbbfffffff在当前(主)分支上。下次执行git svn dcommit时,这些提交已经或将要提交给Subversion。 (提交cccccccdddddddeeeeeee位于一个单独的分支上,该分支已合并到主服务器中,并且不会作为单独的提交提交给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