2010-01-18 77 views
7

假設我克隆遠程Mercurial存儲庫(通過本地網絡甚至通過Internet)嘗試一些東西。
我在克隆工作,做了一些提交...然後我意識到我的更改沒有意義,我必須重新開始。將Mercurial存儲庫「重置」到版本X(無需克隆)的最快方法

因此,我想再次從同一個源代碼庫獲得「新鮮」克隆。
基本上,我想我的本地回購「復位」到前點,我開始嘗試。

什麼是做到這一點的最好/最快的方法是什麼?

最簡單的方法是創建一個新的克隆,然後HG再次通過網絡複製整個回購和整個歷史。
如果回購確實很大,這將需要一些時間和/或阻止網絡。

我試圖在同一個文件夾中創建一個新的克隆(希望HG能夠識別這個並只更新已更改的文件和歷史記錄),但似乎也複製了整個回購。

我可以「hg回滾」,但是這隻會回滾最後一次提交。如果我做了幾個提交,我只能撤銷最後一個提交。所以在開始提交之前,我無法將回購重置爲重點。

任何想法?
真的沒有別的辦法可以再次克隆整個事情嗎?
(注:與TortoiseHg的解決方案將是不錯...我喜歡這種通過命令行)

回答

17

根據gizmo的建議,您將使用hg strip結束我們,但傳統方法是再次克隆 - 而不是從遠程回購,但從您自己的本地回購。例如,如果您籤是「倉庫」,你已經添加的變更99和100,你不喜歡,你會怎麼做:

cd .. 
hg clone -r 98 respository repository-scrubbed 
mv repository respository-with-crap-I-do-not-want 
mv repository-scrubbed repository 

這應該是幾乎瞬時的。

1

hg update -r <changeset number>hg update -r 1的第二個版本。您可以使用hg log來查看您想要的版本

+2

這實際上並沒有使系統回滾到與克隆時相同的狀態 - 你仍然有提交,因爲'昨天' – 2010-01-18 15:53:29

8

如果啓用Mq Extension,則可以使用「hg strip」命令刪除不再需要的歷史記錄。
欲瞭解更多信息,請訪問Strip command wiki頁面。

+0

這爲我工作 – 2014-02-21 12:03:10