2011-12-27 55 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的一部分。