2011-12-27 192 views
22

基本上我想在不推动它们的情况下转换我的更改并且不切换分支。这允许我做一些工作,当我处于良好的停车点时,然后继续在同一分支工作。如果我搞砸了,我可以revert,如果我添加新的更改,我可以再次commitSVN是否等同于git的提交(没有推送)?

我意识到我可以在SVN中创建一个功能分支来跟踪这些更改,但同样,我想在停留在同一个分支/主干时这么做。即使相当于git stash就足够了,尽管看起来SVN没有这个功能。

+0

另请参阅:http://stackoverflow.com/a/527048/59087 – 2014-10-21 19:02:06

回答

31

分布式版本控制的特点是可以在稍后与上游存储库合并的本地提交功能。 SVN不分发,不能这样做。中心的障碍是SVN的线性修订编号,这意味着每个客户必须为每个变更集获得一个新的标识修订号。由于“分配”修订版号并稍后使用它会导致各种竞争条件,所以“提交”和“推送”操作在SVN和每个非分布式版本控制系统中是原子的。

这就是说,git的SVN前端是一个不错的选择,就像乔建议的那样。它确保SVN永远不会看到你的本地,单独的提交,并且“推送”被转换成单个,大的SVN提交。

+2

如果你指的是git-svn,那么推送会将每个git提交转换为svn提交。但是,可以在推送之前手动压缩提交。 – 2012-09-01 00:53:25

25

由设计SVN不,但你可以使用git的git svn命令作为SVN的前端。它允许你从SVN远程执行推/拉工作,但仍然在本地使用git,从而在不推送SVN存储库的情况下进行本地提交。

像这样的东西可能会有所帮助:http://www.viget.com/extend/effectively-using-git-with-subversion/

+5

+1:Git是Subversion的完美前端。 – Johnsyweb 2011-12-27 21:42:47

+2

从我对SVN的理解来看,它非常集中化。意思是如果你承诺任何事情都会转到中央回购。其他IDE在进行更改时可能会执行本地“快照”,并保存该更改。 – Joe 2011-12-27 21:58:49

1

你也许能够使用的被子要做到这一点,但它开始变得棘手,如果你只是想提交你的被子队列SVN的一部分。

相关问题