2010-04-30 61 views
3

我初來乍到的顛覆。最近,我在兩個不同的分支做了一些開發,其中一個分支是另一個分支的分支。我已經合併了從第一個分支到主幹的一些更改。但是,當試圖合併從另一個分支到主幹的變更時,一切都變得不合時宜。也就是說,我有很多的衝突,其中一些我解決了(但不COMMITED)和其中一些則不是。更糟糕的是,我對分支所做的很多改變都是因爲某種原因沒有合併到主幹中。現在,我唯一的問題是,我可以做我的工作拷貝回覆到後備箱返回到原來的狀態?也就是說,我會通過這樣做搞砸嗎?我的教導是重新開始,更「小心」地做。合併後還原,壞主意?

Thanx!

回答

5

只要你總是隻合併成一個乾淨的,新鮮更新的工作副本,你總是可以通過恢復合併所做的所有更改(加上你爲解決衝突所做的更改)退出合併。
只是一定要永遠不會嘗試合併成沒有提交的修改工作副本。

爲了儘量減少合併衝突,要

  • 做一個合併在同一時間(如果由於某種原因你想在那些犯一些合併,您可以創建您的合併目標的臨時副本,合併幾個分支成,歸併回你的合併目標,之後將其刪除。)
  • 首先合併從主幹到分支的變化,解決所有發生衝突
  • 總是從一個分支合併回變化進入樹幹(或其他分支,如果是的話)通過使用從重返svn merge--reintegrate
  • 拋跳投分支機構複製那個)創建並重新創建它們,而不是
1

如果您還沒有提交,並進行還原,你就必須從樹幹的最後一個版本。

我不認爲這是可能的第一合流之後,第二個之前返回你的工作拷貝的狀態。

0

還原你的工作副本將重置您的本地文件傳回的是在庫中。換句話說,它可以擺脫你所做的任何本地修改。它不會更改主幹(因爲主幹位於存儲庫中)。恢復與刪除工作副本幾乎一樣,並再次檢查。

如果您合併到分支主幹的工作副本,沒有提交它,然後試圖您的其他分支合併到同一個工作拷貝,這很容易:只要把工作副本恢復。你會失去一切沒有承諾的東西。

如果你將你的分支合併到trunk中,並且現在你想撤消它,你可以恢復那個提交的改變(它仍然被稱爲「恢復」,但這是一個不同的操作)。例如,如果你使用TortoiseSVN:

  1. 開始與軀幹的清潔工作拷貝(無本地更改)
  2. 使用龜從你的工作副本查看日誌
  3. 右擊修改您要撤消(您提交合並的那個),然後選擇「還原此修訂版本中的更改」。
  4. 承諾,並且您已經有效地撤消了合併。

爲避免此問題,您應該將第二個分支的更改合併回第一個分支,並將第一個分支的更改合併回主幹。如果那不是你想要工作的方式,那麼你可能應該從主幹創建第二個分支,而不是從第一個分支創建。合併到您分支的位置是最容易的。

2

如果你的工作副本搞砸了,最簡單的方法通常是完全刪除它,再次從頭開始檢查,然後再試一次。還原在理論上也是這樣,但添加的文件將被留下(這可能會導致後續合併問題)。另外,顯而易見的是刪除和檢出又是什麼。

只要你還沒有做任何提交,存儲庫中的樹幹將不受影響:合併只修改客戶端的文件。

正如sbi指出的,你應該總是合併成一個未修改的工作副本,否則svn往往會感到困惑。