SVN是否具有与git的提交相同的功能(没有推送)?

时间:2011-12-27 21:31:53

标签: git svn git-commit

基本上我想在没有推动它们而不切换分支的情况下进行我的更改。这允许我做一些工作,commit当我处于一个良好的停止点时,然后继续在同一个分支中工作。如果我陷入困境,我可以revert,如果我添加新的更改,我可以再次commit

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

3 个答案:

答案 0 :(得分:36)

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

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

答案 1 :(得分:29)

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

这样的事情可能有所帮助:http://www.viget.com/extend/effectively-using-git-with-subversion/

答案 2 :(得分:2)

您可以使用quilt来执行此操作,但如果您只想将部分quilt队列提交给svn,它就会变得棘手。