2010-08-26 103 views
112

如果我運行svn rm file,該文件將從本地工作副本中刪除。如何從版本控制中刪除文件而不刪除它?

我現在要做的是:

$ cp file file2 
$ svn rm file 
$ svn ci 
$ mv file2 file 

如何避免SVN使用svn rm時也刪除本地文件?

+0

[SVN從存儲庫中刪除文件而不刪除本地副本]的可能重複(http://stackoverflow.com/questions/542065/svn-remove-file-from-repository-without-deleting-local-copy) – Shai 2014-06-16 13:38:29

回答

250

您需要--keep-local命令行選項。這將從文件系統中刪除文件而不從文件系統中刪除。

$ svn rm --keep-local my_important_file 
+2

Won一旦他們更新,它仍然從其他人的系統中刪除它? – Nyerguds 2015-11-09 08:20:10

+1

@Nyerguds這是正確的,因爲svn rm正在從存儲庫中刪除文件。如果您希望從回購庫中刪除文件,請將它們保存在本地機器上,然後使用上面的標記。 – 2016-02-22 13:31:00

+3

@GregHilston正如我所說的那樣,這並不能真正幫助實際的多程序員項目。應該有一種方法可以將文件解壓到任何地方。這裏最常見的情況是意外提交的本地設置文件(在Java項目中很常見),但是對其進行版本控制不應該擦除其他用戶的設置文件。 – Nyerguds 2016-02-22 13:36:58

-1

我沒有回答這個確切的問題,但我有一個答案,一個相關的問題,那就是如何在一個目錄從版本控制刪除所有文件(即不特定的一個),而不在本地刪除它們。該解決方案來自科學Linux實施。

ls -a .svn

應顯示存儲控制數據的SVN目錄。簡單地說:

rm -r .svn

將擺脫這個目錄。然後鍵入:

svn status

將產生「警告:這個目錄是不是工作拷貝」的錯誤,因爲它不再是版本控制之下。

我希望這會有所幫助。

+0

有關的問題?刪除文件並刪除整個工作副本是完全不同的東西恕我直言。 – Melebius 2017-11-15 13:21:59

6

從SVN中刪除文件而不在本地刪除它是一個常見問題。一個突出的例子是Eclipse項目中的文件.classpath。只要項目中使用的所有機器具有相同的Eclipse和Java安裝,將此配置文件置於SVN下方就非常奇妙。一旦違反這個條件,提交就開始打破其他Eclipse項目。這是人們必須從SVN中刪除文件而不刪除任何地方的IST。

svn rm --keep-local .classpath 

在一臺機器上及時完成這項工作。

問題是其他機器可能會丟失該文件(更新時)或重新生成它(提交時)。 SVN的缺陷是既不能在存儲庫中處理--keep-local也不能將其傳播到其他工作副本。因此,在任何提交或更新之前,上述命令的所有其他機器必須最好執行—。

這當然會最好工作90%。刪除和重新排版會突然發生。我的解決辦法是讓每一臺機器,我必須直接或間接訪問,請

svn rm --keep-local .classpath 
copy .classpath .classpath-nameOfTheMachine 
svn add .classpath-nameOfTheMachine 

這是顧左右而言他醜到幾乎不稱爲「解決方案」。儘管如此,它總是可以快速修理任何後來發生的事故。

相關問題