如何看到';git svn数据委员会';在提交数据之前进行更改?

如何看到';git svn数据委员会';在提交数据之前进行更改?,git,svn,git-svn,Git,Svn,Git Svn,使用svn git,我如何看到将要提交的内容 使用git svn DCOMIT 以下是我运行的命令: git svn clone file:///svn/test1 test1-git cd test1-git echo "first line" > test1.txt git add test1.txt git commit 现在它被提交到git存储库——很好。但在我运行git svn dcommit之前,我希望看到一个diff,其中包含将提交到svn存储库的更改。第二个答案(

使用
svn git
,我如何看到将要提交的内容 使用git svn DCOMIT

以下是我运行的命令:

git svn  clone file:///svn/test1 test1-git
cd test1-git
echo "first line" > test1.txt 
git add test1.txt 
git commit 

现在它被提交到git存储库——很好。但在我运行git svn dcommit之前,我希望看到一个diff,其中包含将提交到svn存储库的更改。

第二个答案(在指出“干运行不够”的注释后进行了修订)

根据您的期望,可以这样使用git日志:

git log remotes/svn.. --oneline
注意结尾的两个句号。这将显示自上次共享父级以来当前分支上的所有提交。在典型的git svn使用情况下,这将是自上次dcommit以来的所有本地提交。(这假设您的远程SVN分支名称为“remotes/SVN”。您可以运行“git branch-a”来列出所有分支。)了解这与逐字运行它相比是很重要的,但这可能提供了更多您想要的内容


第一个答案

您可以使用--dry run with dcommit:

git svn dcommit --dry-run

查看此重复的问题/答案:。

如果您的远程分支被称为
git svn
(如果您只做一个普通的
git svn克隆
),那么您可以看到当前分支和
git svn
之间的差异:

git diff git-svn HEAD

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

可以将“git svn dcommit--dry run”的输出再次馈送到git,如下所示:

git diff-tree 2282c630eeef26fecbc3f3519be55a9dce094c80~12282c630eeef26fecbc3f3519be55a9dce094c80 -u
请注意结尾处的“-u”。 然后,您将看到一个差异

如果您只想看到类似“svn stat”的内容,可以使用“--stat”:


当我启动
git svn dcommit
时,我首先打开
gitk
并要求它显示要传输的提交:

gitk git-svn..

这假设您的上游SVN回购实际上被称为
git SVN
as。如果您不确定上游SVN回购协议的名称,只需启动
gitk
并搜索您没有创建的分支(听起来是Git-SVN-ish)。

这不会显示任何有用的差异,就像
提交到file:///svn/test1 ... 差异树e8e4449bbf534d373694194873ea6a9ed41517bf~1E8E4449BBF534D373694194873EA6A9ED41527BE
我用另一个想法编辑了我的答案。不过,要明确的是,尽管svn dcommit--dry run不容易理解,但从GIT的角度来看,它对于svn将要承诺的内容是精确的。在看到Tomas的答案后,我意识到我不确定您真正想要什么。实际更改的差异,或尚未提交的提交日志。我的答案显然是后者。你找到答案了吗?对我来说不起作用,我在克隆时按照建议添加了前缀origin/所以我的远程分支是“remotes/origin/trunk”。因此,我不得不使用git diff origin/trunk HEAD
。日志版本也很好:
git log origin/trunk..HEAD
gitk git-svn..