[英]How to revert a commit made to a particular file in SVN?
盡管已經有很多與svn revert
相關的問題,但是我不確定是否曾經問過這個特定問題。 因此,請在關閉/刪除/等之前先閱讀。 這個問題。
在SVN儲存庫中,作為較大提交的一部分,已對文件進行了更改。 這個修訂版名為1100,更改了許多文件的內容,包括有問題的文件,稱為foo.php
。
隨着時間的流逝,對存儲庫進行了其他一些更改,包括對文件foo.php
(例如,在1200、1300、1400和1500版中)。
稍后,很明顯,版本1100中對foo.php
文件foo.php
的更改是不正確的。 但僅適用於1100版本,僅適用於特定文件foo.php
。
如何在不影響任何其他文件的情況下輕松地恢復提交1100,並在1200至1500版本中保留對文件foo.php
所做的所有中間更改?
在Subversion中還原提交是對文件應用反向補丁 ,然后提交。
假設文件“ foo.php”在修訂版N
應用了錯誤的更改。 您可以通過運行類似的命令來查看更改的內容
svn diff -c N ^/path/to/that/foo.php
現在您可以通過運行來獲得反向差異
svn diff -c -N ^/path/to/that/foo.php
所以要還原更改嗎
svn merge -c -N ^/path/to/that/foo.php
當您的工作樹處於明智狀態時,然后提交。
這種合並形式稱為“櫻桃采摘”,讓我們舉出svn help merge
的特定部分:
“反向范圍”可用於撤消更改。 例如,當源和目標引用同一分支時,可以“撤消”先前提交的修訂。 在相反的范圍內,'-r N:M'中的N大於M,或者'-c'選項使用負數:'-c -M'等效於'-r M:<M- 1>。 取消這樣的更改也稱為執行“反向合並”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.