是否有將單個提交(例如,本地存儲庫中的提示變更集)轉換爲工作目錄中的未提交更改的方法?
我知道hg strip
刪除指定的變更集並將其備份,但它是否會將這些變更集轉換爲工作目錄中的未被更改的變更?將已提交的變更集轉換爲Mercurial中的未提交更改
編輯:的hg rollback
關於使用。
如果在我想要做hg rollback
之前我有未提交的更改怎麼辦?我必須首先提交這些內容嗎?最後幾次提交呢?序列號hg rollback
是否將這些提交的更改疊加到現有未提交的更改?
是否有將單個提交(例如,本地存儲庫中的提示變更集)轉換爲工作目錄中的未提交更改的方法?
我知道hg strip
刪除指定的變更集並將其備份,但它是否會將這些變更集轉換爲工作目錄中的未被更改的變更?將已提交的變更集轉換爲Mercurial中的未提交更改
編輯:的hg rollback
關於使用。
如果在我想要做hg rollback
之前我有未提交的更改怎麼辦?我必須首先提交這些內容嗎?最後幾次提交呢?序列號hg rollback
是否將這些提交的更改疊加到現有未提交的更改?
如果你想重做最後一次提交(也許是一個更好的提交信息,也許修正了一個錯誤),那麼你現在應該使用
$ hg commit --amend
更新最後承諾。如下所述,這比使用
hg rollback
安全得多。
如果提交是最後一次提交,你有沒有更新任何地方,那麼你可以使用hg rollback
。請閱讀hg help rollback
- 這是一個潛在的破壞性命令。
它做什麼:hg rollback
將回滾您的存儲庫中的最後transaction。每當你hg commit
,hg pull
,hg unbundle
等,你創建一個新的交易。當一切安全存儲後,Mercurial關閉交易。如果交易中出現問題,Mercurial可以恢復(請參閱hg recover
)。您也可以使用hg rollback
手動回滾上次交易。請參閱hg rollback --dry-run
瞭解該命令將執行的操作。
回滾命令不會觸及您的工作副本。這意味着顯示爲之前修改的文件將再次出現修改。所以很容易做
$ hg commit -m "Fixed buug-123"
Ups,錯誤在提交消息!讓我們來解決這個問題:
$ hg rollback
$ hg commit -m "Fixed bug-123"
(使用hg commit --amend
與替代水銀2.2及更高版本。)
最後提交信息也保存在.hg/last-message.txt
這樣你就可以從那裏恢復它,如果你沒有它你的shell歷史。
如果在我想要執行hg回滾之前我有無法做出的更改會怎麼樣?我必須首先提交這些內容嗎?
回滾不會觸及工作副本。這意味着工作副本中的任何其他更改將與變更集中的更改一起顯示。就好像你根本沒有輸入hg commit。
最後幾次提交怎麼樣?連續hg回滾堆棧是否從提交更改爲現有未被更改的更改?
不,你只有one level of rollback因爲我們只跟蹤最後的交易。
任何變更(或一組變更集)更容易可被轉化爲局部變化與Mercurial Queues(倍|展開變更)
TortoiseHG-centric manual(舊GUI)顯示操作一步一步
雖然你應該儘可能使用hg commit --ammend
我現在更喜歡新的和更強大的mecurial歷史編輯功能:hg histedit
特別是如果你熟悉git。
你可以通過簡單地做一個hg out
(即你想選擇未被推送的版本)來看到你想要返回的版本。
如果在我想要執行'hg rollback'之前我有無限制的更改怎麼辦?我必須首先提交這些內容嗎?最後幾次提交呢?連續的'hg rollback'堆棧是否從那些提交改變爲現有的未被改動的改變? – 2012-01-18 10:16:12
回滾不會觸及工作副本。這意味着工作副本中的任何其他更改將與變更集中的更改一起顯示。就好像你沒有輸入'hg commit'。更改多個提交是另一個主題,請參閱[回滾多個提交](http://stackoverflow.com/q/4925094/110204),也許[更新提交消息](http://stackoverflow.com/a/8503002/110204) 。 – 2012-01-18 10:36:32
值得一提的是,在想要解決提交消息的特定情況下,'hg commit --amend'可能更有用。這是在Mercurial 2.2中添加的,這個答案寫完後四個半月。 – 2013-04-19 09:44:11