[英]Reverting To Original SVN status
svn初學者:
讓我們說我從一個svn倉庫中撤出並編寫了相當多的代碼。 但是,我只想提交我修改過的一半文件。 但是,我不小心在所有這些上使用了svn add
。 如何在不實際觸摸修改后的代碼的情況下返回上一個svn狀態(在添加所有這些文件之前)。
我知道我可以手動使用svn delete一半,但我想知道是否有更快的方式來回復。
如果你沒有提交和使用像TortoiseSVN這樣的工具,你可以對你不需要的文件(標記多個)進行簡單的還原或“撤消添加”。
我希望你還沒有做出改變。
您可以使用以下命令取消添加文件:
$ svn delete --delete --keep-local $file_name
這將取消添加文件,同時將文件保留在驅動器上。
您還可以使用以下方法撤消所有更改(包括所有添加):
$ svn revert -R .
這將還原所有文件,並將在您添加的任何文件中取消添加,但不會刪除任何內容。 這還將還原已存儲在存儲庫中的文件中所做的任何更改。 但是,更改列表可以節省一天。
您還可以使用svn cl
命令在Subversion中創建更改列表 :
$ svn cl FOO $file1 $file2 $file3
$ svn cl FOO $file4 $file5
這將創建一個名為FOO
的變更列表,其中包含上述五個文件。 請注意,您只需提供更改列表名稱和新文件即可添加到更改列表。 要刪除文件:
$ svn cl --remove $file4
這將從$file4
列表FOO
刪除$file4
。
$ svn cl BAR $file1
這將從$file1
列表FOO
刪除$file1
並將其放在changelist BAR
。
現在,這里是所有人聚集在一起的地方......
$ svn revert --cl FOO -R .
這將還原所有文件,但只返回更改列表FOO
。 未觸及所有其他文件。 因此,您可以創建要取消添加的所有文件的更改列表,然后在該更改列表上使用svn revert
命令。 這將保留您的文件,但同時取消添加它們。
因此,創建要取消添加的所有文件的更改列表 ,然后對該更改列表執行svn revert
。
你可以這樣做:
$ svn list | awk '$1 == A' '{print $2}' | tee files_to_unadd_list.txt
這將為您提供添加到Subversion的所有文件的列表,並將其放入列表中。 然后,您可以編輯該列表以刪除要保留的文件。 結果是您要取消添加的文件列表。
然后你可以像這樣處理它:
$ while read file
do
svn revert --force --keep-local $file
done < files_to_unadd_list.txt
或者,首先創建一個更改列表:
$ while read file
do
svn cl UNADD $file
done < files_to_unadd_list.txt
然后瀏覽該列表,驗證它,然后:
$ svn delete --cl UNADD -R .
如果您的更改不包含svn copy或svn move,則撤消所有svn添加並保留更改的最簡單方法之一是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.