2011-11-01 107 views
1

所以我有一個本地生成文件。SVN:恢復提交,同時保留本地更改

它不應該在SVN中,但它是。 (謝謝,以前的維護者!)但是對本地副本進行了更改,僅適用於構建它的盒子。

我搞砸了,並提交這個本地構建文件。現在SVN回購副本具有這些本地更改;這不好。

我怎樣才能回到原狀,當地的變化是在本地副本,而不是在SVN回購協議,隨後svn update不會覆蓋本地更改?

回答

2
  1. 將文件與本地更改備份在某處。
  2. 做的文件顯示日誌,和之前的不必要的更改(使用更新與給定的版本號)
  3. 提交的文件
  4. 更新整個工作副本
  5. 恢復恢復該文件的修訂在步驟1完成的備份

您可以使用更改列表或鎖定文件以避免再犯同樣的錯誤。

+0

感謝您的回答。但是,嚴重的是,SVN中沒有更簡單的方法?我*不能*是第一個做這件事的人(白癡)。 – tpdi

+0

我真的不知道它可能會更容易。您需要保留本地更改,因此需要進行備份。你需要恢復到以前的版本,所以你必須告訴哪個版本。 SVN無法爲你猜出它。通常,如果某個文件不應該提交,它不應該在SVN中。 –

+0

>通常,如果某個文件不應該被提交,它不應該在SVN中。真正的數據。 ;( – tpdi

0
  1. 不能在WC存儲「地方只有」變化,如果更改的文件版本(除添加設置爲忽略列表)
  2. 您可以撤消任何一次提交(S)通過反向合併
0

對於我這樣一個原理:

> svn st 
M  0027 
> svn info 0027 | grep URL 
URL: svn://localhost/xxx/trunk/0027 
> svn rm -m "remove accidently checked in file" svn://localhost/xxx/trunk/0027 
Revision ... 
> svn update 
    C 0027 
At revision 42. 
Summary of conflicts: 
    Tree conflicts: 1 
> svn revert 0027 
Reverted '0027' 
> svn status 
?  0027 

所以文件0027還活着,有它的舊內容,但不是在回購了。

0

如果你的文件不應該進行版本控制,你可以取消它的版本:

svn rm --keep-local filename 

這將讓任何本地文件,但SVN將停止跟蹤它。