簡體   English   中英

恢復原始SVN狀態

[英]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添加並保留更改的最簡單方法之一是:

  1. 將整個工作副本復制到另一個地方, 不包括 .svn目錄(讓我們稱之為wc.new)
  2. 對原始工作副本執行svn還原
  3. 將wc.new復制回原始工作副本並替換所有文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM