基本上,我想在不推送它们和不切换分支的情况下进行更改。这允许我做一些工作,当我在一个好的停止点时,commit
它,然后继续在同一个分支中工作。如果我搞砸了,我可以revert
,如果我添加新的更改,我可以再次commit
。
我意识到我可以在SVN中创建一个特性分支来跟踪这些变化,但是,我想在保持同一分支/主干的情况下这样做。即使相当于git stash
也足够了,尽管SVN似乎没有这个功能。
分布式版本控制的关键是本地提交的这个特性,它可以在稍后与上游存储库合并。SVN不是分布式的,无法实现。主要的障碍是SVN的线性修订编号,这意味着每个客户端必须为每个更改集获得一个新的标识修订编号。由于"分配"一个版本号和以后使用它会导致各种各样的竞争条件,"提交"one_answers"推送"动作在SVN和每个非分布式版本控制系统中都是原子的。
也就是说,git的SVN前端是一个不错的选择,就像Joe建议的那样。它确保SVN永远不会看到本地的、单独的提交,并且"推送"被转换成单个的、大的SVN提交。
从设计上讲,SVN不这样做,但是你可以使用git的git svn
命令作为SVN的前端。它允许您从SVN远程执行推/拉工作,但仍然在本地使用git,因此无需将其推送到SVN存储库即可进行本地提交。
像这样的东西可能会有所帮助:http://www.viget.com/extend/effectively-using-git-with-subversion/
您可以使用quilt来完成此操作,尽管如果您只想将被子队列的一部分提交给svn,则会变得棘手。