我有svn repo,並且我在過去的某個地方刪除了一個文件,我如何從svn歷史記錄中獲取該文件?讓說我現在修訂版2000年和1950年如何從svn repository中刪除文件
回答
svnbook有一個topic關於如何處理這個。
它基本上可以歸結爲:
- 如果文件缺失的提交,你可以使用
svn merge -c -revnum
恢復該文件的唯一的事情。 - 如果有其他變化的承諾,你可以將文件從版本複製刪除前 -
svn copy [email protected] file
移除文件。如果你只是想「得到」的文件,你可以這樣做:
svn cat -r 1950 file > file
但已經指出的那樣,這將不會檢索任何文件歷史記錄,並且會被SVN看作是一個全新的文件。
- 首先,運行
svn log -v
,看看你是否能找到刪除的修正文件。 - 一旦找到文件被刪除的位置,您可以使用
svn merge
或svn cp
取回文件。
比方說,你需要在trunk/proj/mydir
恢復foo.txt
:
$ svn log -v $REPO/trunk/proj/mydir | less
然後你可以使用/D .*foo.txt
來搜索文件的輸出少。你會發現該文件是在修訂1235刪除:
如果這是唯一的修訂1235一樣,或者你決定要復原的那個版本剩下的東西,你可以用svn merge -c
:
$ svn co --depth=immediates $REPO/trunk/proj/mydir # No need to checkout sub directories too
$ cd mydir
$ svn merge -c -1235 . # Undoes the delete
$ svn commit -m "Restored file 'foo.txt' deleted in revision 1235"
有時你只是想恢復該文件,而不是修訂版中的所有其他更改。在這種情況下,請使用svn cp
命令。
$ svn cp -r1234 -m"Restored $foo.txt removed in rev 1235" \
$REPO/trunk/proj/mydir/[email protected] $REPO/trunk/myproj
或者你也可以做到這一點,雖然檢出:
$ svn co --depth=immediates $REPO/trunk/proj/mydir # No need to checkout sub directories too
$ cd mydir
$ svn cp -r1234 [email protected] . # Undoes the delete
$ svn commit -m "Restored file 'foo.txt' deleted in revision 1235"
請注意,我用的版本1234,而不是1235,因爲該文件已被刪除,如果你願意,你可以這樣做而不做結賬在修訂版1235中,並不存在於該修訂版中。我使用-r
來指定我希望修訂1234
的foo.txt
,並在URL的末尾指定@1234
以指定該文件存在於版本庫目錄佈局的修訂版1234
中。
當我運行第一個命令時,我遇到了錯誤,發現沒有找到對象,它嘗試在磁盤上搜索它。 – jcubic
'$ REPO'是你的Subversion版本庫的URL。不知道它是什麼,我只是把'REPO'。如果您的存儲庫位於'http:// foo.com/svn'上,則該命令將是'svn ls http:// foo.com/svn/trunk/proj/mydir',假定'trunk/proj/mydir'是缺少的文件所在的目錄。 –
- 1. 如何從SVN Repository中取消刪除
- 2. 如何從svn中刪除「 - 」文件?
- 3. 如何從svn中刪除.git文件?
- 4. 我如何從SVN Repository Checkout中排除文件夾?
- 5. 通過Tortoise從SVN中刪除文件/文件夾:如何?
- 6. 從「.svn/pristine」文件夾中刪除舊的SVN文件
- 7. 從svn中刪除resharper文件
- 8. svn文件刪除
- 9. SVN!文件...刪除?
- 10. svn從回購和刪除工作副本中刪除文件
- 11. 如何從Visual svn中刪除一個文件夾?
- 12. 如何從java文件中刪除SVN歷史記錄?
- 13. 如何從git提交中刪除文件以推送到svn
- 14. 我如何從SVN中刪除損壞的文件?
- 15. 如何從SVN倉庫中刪除文件
- 16. 如何從SVN文件中刪除密碼?
- 17. 如何從SVN同步中刪除文件?
- 18. 如何從svn轉儲文件中刪除頂層
- 19. 如何從svn中刪除gen文件夾:忽略
- 20. 如何從github倉庫中刪除.svn文件夾
- 21. 如何從svn工作副本中刪除文件而不刪除它?
- 22. 從svn取消刪除文件?
- 23. 如何從svn中刪除存儲庫
- 24. 如何從git repo中刪除git-svn?
- 25. 如何使用python svn模塊從SVN遠程倉庫中刪除文件
- 26. 如何使用GUI SVN工具從文件夾中刪除SVN綁定
- 27. 在Visual Studio中從SVN中刪除文件非項目文件
- 28. 如何刪除使用PowerBuilerIDE與PushOK(SVN)從SVN中刪除的.pbl文件中的項目?
- 29. SVN文件夾刪除
- 30. 刪除.svn文件夾
這不會保留任何以前的文件歷史記錄。 – jamessan
@jamessan op確實說過「獲取」,這並不一定意味着需要在源代碼控制中使用它。 – crashmstr
當然。只是指出這種方法的一個警告,以防它恢復到源代碼管理。 – jamessan