[英]How to revert a Mercurial hg pull?
如果你做一個hg pull
然后一個hg update
(或一個hg merge
),有沒有辦法支持這個? 即:將您的存儲庫恢復到執行hg pull
之前的狀態?
我相信你可以做hg update -rn
,你可以在pull之前指定變換集為n
。 雖然我猜這仍然會將更改集留在您的存儲庫中,但這並不是我們想要的。 ??
hg strip
將從存儲庫中刪除修訂。 像所有強大的命令一樣,它很危險,所以要小心。
https://www.mercurial-scm.org/wiki/StripExtension
另見:
https://www.mercurial-scm.org/wiki/EditingHistory
如果您立即(或合理地很快)發現錯誤,您可以使用hg strip REV來回滾最新(一個或多個)更改。 ...
好的,你不能回滾,因為你已經完成了提交。 您可以做的是使用'hg strip',它是mq的一部分(在2.8 strip之后是它自己的擴展名),或使用mq刪除更改。 無論哪種方式,我建議你在另一個克隆上做一切,以防萬一。
要執行剝離,請更新到要保留的修訂,然后
hg strip <REV>
其中<REV>
是您要刪除的第一個修訂版本。 它將刪除該一個和所有后代(包括您的合並提交)。
或者你可以
hg qnew (if you don't already have a patch queue)
hg qimport <REV>
這會將單個修訂導入補丁隊列。 然后,您可以添加更多,然后使用mq命令編輯,重新排列,刪除或您想要對這些修訂執行的任何操作。 qdel
刪除當前的補丁。
編輯:顯然,除非您使用2.8或更高版本,否則您需要為這兩者啟用MQ擴展。 在這種情況下,條帶在條帶擴展中,mq在mq擴展中。 兩者都附帶標准安裝。
hg --rollback
可用於撤銷上一個事務,因此只要您的hg pull
仍然是最近的事務,那么您可以使用它。 但是應該謹慎使用此命令。 請參閱此處了解更多詳情。
如果你想從歷史中刪除拉動的所有痕跡,那么你需要使用Bert F建議的擴展(mercurial中的哲學是永遠不會改變歷史)
如果你不介意包含你的錯誤的歷史,你有兩個略有不同的選項hg update -C -r
將在你指定的版本或hg revert -r
創建一個新的分支,它將保留在同一個分支上但創建一個新的uncommited更改撤消一切。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.