如何在提交之前看到'git svn dcommit'的变化?

Fra*_*ank 21 svn git git-svn

有了svn-git,我怎么能看到即将发生的事情git svn dcommit

以下是我运行的命令:

git svn  clone file:///svn/test1 test1-git
cd test1-git
echo "first line" > test1.txt 
git add test1.txt 
git commit 
Run Code Online (Sandbox Code Playgroud)

现在它致力于git存储库 - 很好.但是在我运行之前,我git svn dcommit希望看到包含将提交给SVN存储库的更改的差异.

Tom*_*kas 16

如果你的远程分支被调用git-svn(如果你只是做一个普通的话,就会调用它git svn clone),那么你可以看到当前分支和之间的差异 git-svn:

git diff git-svn HEAD
Run Code Online (Sandbox Code Playgroud)

您将看到当前分支中存在的所有更改,但不会显示在svn存储库中.


MKK*_*MKK 9

'git svn dcommit --dry-run'的输出可以像这样再次输入git:

git diff-tree 2282c630eeef26fecbc3f3519be55a9dce094c80~12282c630eeef26fecbc3f3519be55a9dce094c80 -u
Run Code Online (Sandbox Code Playgroud)

注意最后的'-u'.然后你会看到差异.

如果你只想看到像'svn stat'这样的东西,你可以使用'--stat':

krausem-> git diff-tree f00e37882b7186e9e7f38c2fa28778e39734e2e7~1 f00e37882b7186e9e7f38c2fa28778e39734e2e7 --stat
 .../src/main/webapp/tiles/vertrag/freiKlauseln.jsp |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
Run Code Online (Sandbox Code Playgroud)


kal*_*ech 3

第二个答案 (在评论表明 --dry-run 不够充分后进行修改)

根据您的期望,可以像这样使用 git log :

git log remotes/svn.. --oneline
Run Code Online (Sandbox Code Playgroud)

注意最后的两个句点。这将显示自上次共享父级以来当前分支上的所有提交。在典型的 git-svn 使用情况下,这将是自上次 dcommit 以来的所有本地提交。(这假设您的远程 SVN 分支名称是“remotes/svn”。您可以运行“gitbranch -a”来列出所有分支。)了解它的作用与仅逐字运行它相比很重要,但这可能提供了更多信息你在寻找什么。


第一个答案

您可以将 --dry-run 与 dcommit 一起使用:

git svn dcommit --dry-run
Run Code Online (Sandbox Code Playgroud)

请参阅此重复的问题/答案:如何查看已签入 git 的内容,但尚未通过 dcommit 提交给 svn?