2015-11-11 155 views
1

我正在使用SVN並更新了我的項目。SVN恢復更新

由於意外,我在解決衝突時選擇了「Keep Mine」而不是「Keep their」。 然後,我嘗試手動還原這些更改,但這並不起作用,現在文件處於不良狀態。

我該如何重做更新? 可以在更新之前恢復到我的狀態,然後再次更新嗎?

回答

1

如果我正確地理解了你,那麼你的文件包含你的本地變更(未提交)和一些上游變更(合併到你的工作副本中,但沒有提交回repo)的混合。如果確實如此,那麼不幸的是不是一個簡單的出路。使用svn revert會清除全部未提交的更改,這可能不是您想要的。以下是我將嘗試恢復原始文件的方法。

首先,在您嘗試其他任何操作之前,先備份該文件。這應該防止進一步的數據丟失。

現在,獲取文件的三個不同版本的副本:您當前的副本,版本庫中的版本以及您嘗試合併的版本。您將不得不使用這三個文件之間的差異來標識工作副本中的更改是您的本地更改以及哪些是合併更改。一個可以進行三向比較的圖形工具在這裏很有用,但如果你沒有,你也可以使用原始版本和本地版本之間以及原始版本和合並版本之間的雙向差異。這個想法是識別您的本地更改,然後將它們手動合併爲新的文件副本。由於合併,您的某些本地更改可能已丟失或更改,因此您可能不得不重新創建一些內容(希望不會太多)。

這是一個手動過程,但它可能是最好的,你可以做。您的成功水平可能取決於您本地更改的範圍以及這些本地更改與合併更改重疊的程度。爲避免將來出現這種情況,我建議只在工作副本沒有本地更改時進行合併。如果無法避免,則可以執行svn diff以在合併之前保存一個本地修改的修補程序,如果需要,您可以返回到預合併狀態(svn revert然後應用修補程序)。