簡體   English   中英

如何恢復Mercurial hg拉?

[英]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仍然是最近的事務,那么您可以使用它。 但是應該謹慎使用此命令。 請參閱此處了解更多詳情。

您可以:

hg update -C <version>

請參閱mercurial FAQ

如果你想從歷史中刪除拉動的所有痕跡,那么你需要使用Bert F建議的擴展(mercurial中的哲學是永遠不會改變歷史)

如果你不介意包含你的錯誤的歷史,你有兩個略有不同的選項hg update -C -r將在你指定的版本或hg revert -r創建一個新的分支,它將保留在同一個分支上但創建一個新的uncommited更改撤消一切。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM