根据手册,git dcommit
"将在git中为每个提交创建一个SVN版本."但有没有办法避免多次Subversion修订?也就是说,让git在执行之前合并所有更改svn commit
?
如果你在git中的一个分支上工作,你可以在git中做到git-merge --squash
这一点.然后你可以将那个压扁的提交推送到SVN.
当然,很多小提交都很好,那你为什么要挤压它们呢?
该命令git rebase -i
可以执行此操作,等等.这个命令非常强大,所以与它交朋友是件好事.
语法是:git rebase -i
.这将打开文本编辑器,其中包含用于修改所有提交(不包括)给定ID的选项(和说明).
例如,要修改之前的5个提交,您可以执行以下操作:
git rebase -i HEAD~5
或者,如果您的SVN分支被称为"svn/trunk",那么这种语法也很好:
git rebase -i svn/trunk
然后会弹出一个文本编辑器窗口.要压扁所有东西,将第一个单词后面的第一个单词从"pick"更改为"squash"(如果这看起来很混乱 - 当你看到它时会更有意义).然后保存并关闭编辑器.然后,您将有机会编辑压缩提交的提交消息.
您可以使用的其他功能git rebase -i
包括重新排序提交,以不同方式压缩提交以及删除提交.
我经常使用这个命令; 这是Git的杀手级功能.
Ryan Tomayko写了一些关于git rebase -i
他的文章,他说:
...... [它]有点像git commit -amend跳上酸和拿着电锯 - 完全疯了,非常危险但能够暴露出全新的心态.在这里,您可以以比它应该更容易和更直观的方式编辑,压缩,重新排序,分离和注释现有提交.
我倾向于经常在git中提交,但不一定要将每个提交都提交给svn,并且压缩我所有的工作也没什么意义.我现在正在尝试重新排序并将一些压缩成更多逻辑提交单元.