2011-01-05 21 views
3

這似乎是人們可能想用顛覆做的最基本的事情之一,但我沒有長時間使用版本控制系統,並且似乎無法想象這個出來,我不知道在svn文檔中看什麼。基本上,修訂版167工作得很好,但我犯了一個錯誤,並將其作爲修訂版168(我不確定錯誤的確切位置)。我跑svn update -r 167,然後svn revert讓我的工作副本回到修訂版167,並且一切都可以再次運行。現在,我想就從這裏開始 - 即讓一個小的變化,以這個工作副本並提交修訂爲169,完全無視我的修訂168修復在顛覆中犯下的錯誤

如何做到這一點做的一切?當我嘗試提交時,烏龜svn給了我一個錯誤,說我需要在提交之前更新我的工作副本,顯然這不是我想要的,因爲它會將我帶回到修訂版本168.

感謝幫助!

回答

10
svn merge -r 168:167 
svn ci -m "removing changes from r168" 

http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo - 在這裏你可以詳細瞭解這項技術。

as DavidRodríguez - dribeas提到你應該從HEAD修訂開始。所以在我建議的命令之前執行svn up

+1

+1,請注意,您必須先使用'svn up -r168',即使用最新版本,而不是上一個工作版本。 – 2011-01-05 11:49:15

+0

@DavidRodríguez - dribeas:是的,很好的音符。 – zerkms 2011-01-05 11:51:31

+0

謝謝,那就是我一直在尋找的! (雖然你可能想稍微更新答案,但我意識到你必須在合併命令的末尾包含一個源代碼,我只是在更新之後使用了我的工作副本)。我曾假設做一次合併會將167和168之間的所有非衝突差異結合起來,這可能不會解決問題,但事實並非如此。現在我明白了。 – danny 2011-01-05 19:41:38

4

在Subversion中,你實際上不能刪除你已經提交的東西。我的建議是,您將工作副本更新到最新版本,然後打開「SVN Show Log」對話框。一旦進入它,點擊錯誤的版本,然後選擇「從此版本恢復更改」上下文菜單。儘管命名,它不是revert操作(在Subversion恢復意味着刪除未提交的本地更改)。 TortoiseSVN將通過反向合併操作撤銷本地副本中的更改。檢查一切正常,然後提交。

+0

感謝您的回答,我敢肯定這也會起作用,但我使用了命令行解決方案,因爲我想更好地理解底層的svn命令。 – danny 2011-01-05 19:45:04

1

如果您使用的烏龜,你可以用看如何恢復你的提交here。否則,zerkms的命令行命令應該做到這一點。