我有一對提交應該只是一個。如果我使用git,我會使用:我可以壓縮提交Mercurial嗎?
git rebase -i <some-commit-before>
然後擠壓它們。
我可以在mercurial中做到嗎?如果是這樣,怎麼樣?
我有一對提交應該只是一個。如果我使用git,我會使用:我可以壓縮提交Mercurial嗎?
git rebase -i <some-commit-before>
然後擠壓它們。
我可以在mercurial中做到嗎?如果是這樣,怎麼樣?
是的,你可以使用mercurial來做到這一點,沒有任何擴展Concatenating Changesets。
或者,如果你想使用一個擴展,你可以使用:
是的,我在我對一般性問題的評論中發現了我喜歡的那些問題的答案。我認爲這是你的答案。 – 2009-11-12 21:53:10
Collapse擴展易於安裝,非常易於使用,正是我所期待的! – MattGWagner 2010-12-30 03:02:40
有一點值得注意:Histedit擴展名是隨Mercurial 2.3及更高版本發佈的。你只需要啓用它。 – Paidhi 2015-04-16 14:00:40
我最喜歡的是hg strip --keep
命令。然後我在一次提交中提交所有更改。
這對我來說是最快和最舒適的方式,因爲我喜歡我的日常工作中做很多小的提交;)
注1:strip
需要一個內置的擴展mq
啓用。
注2:我最喜歡的Git/Mercurial客戶端(SmartGit/Hg)默認在strip
期間追加--keep
參數。而更加方便的是:它提供了選項join commits
:]
hg strip的完整命令是: 'hg strip --keep --rev [rev]' Where 'rev'是第一次提交的版本號,你想和最後一個進行壓縮 – 2014-07-24 15:50:46
@NicolasForney不完全是,'--rev'是可選的,完整的命令是'hg strip --keep [rev]' – 2014-07-25 06:13:00
在3.3.3中給我:'hg help strip'給出' hg strip [-k] [-f] [-n] [-B書籤] [-r] REV ...',並省略修訂給我'中止:空版本集'。 – 2015-06-14 18:51:02
Rebase extension就像一個魅力。壓縮2次提交:
$ hg rebase --dest .~2 --base . --collapse
點是當前修訂的快捷方式。
,當你有一個分支幾個提交,並希望他們都摺疊成一個那就更簡單了:
$ hg rebase --dest {destination branch (e.g. master)} --base . --collapse
如何工作的:
如果你正在閱讀這個答案,你可以忘記其他所有選擇在本答覆中提到的 ,並使用evolve extension中的
fold
命令。
evolve
是mercurial的延伸,它可以幫助我們獲得安全的可變歷史記錄,但它仍然是實驗性的。你可以使用它從它的repo中克隆它並像這樣將它添加到你的.hgrc中。
[extensions]
evolve = ~/evolve/hgext/evolve.py
假設您在主目錄中克隆了進化回購。現在你很好走。您還可以通過hg help fold
尋找幫助。
你告訴fold
到壁球/摺疊提交這是不破的線性鏈。什麼是摺疊,它會創建一個新的變更集,其中包含所有變更集的變更,並將所有這些提交內容標記爲過時。您可以在docs有更深入的瞭解。
現在假設您有以下歷史記錄。
a -> b -> c -> d -> e -> f -> g
你想壁球e
,f
和g
。你可以做
hg up g
hg fold -r e
其結果將是
a -> b -> c -> d -> h
其中h
是包含來自所有三個提交e
,f
和g
變化的變更。
您也可以從歷史中間摺疊變更集,即不一定必須選擇包含提示的鏈。假設您想摺疊b
,c
和d
。你可以做
hg up d
hg fold -r b
hg evolve --all
這將導致
a -> i -> j
其中i
是b
,c
,d
和j
摺疊變更相同變更爲h
。 Evolve user guide是必讀。
看起來像rebase涵蓋了該擴展的大部分(也許是所有?)用例,當然也包括這個問題。該擴展的殺手功能是隱藏(而不是刪除)你替換的版本,但是rebase的'--keep'選項覆蓋了這個(隨後將修改標記爲祕密,或者在你檢查完成後使用strip結果)。即使在其他修訂版本之間移動修訂版,也可以使用兩個rebase命令序列。 – 2017-07-17 10:03:14
......再加上,如果你正在做一些非常複雜的事情,你總是可以首先克隆本地回購站作爲備份。考慮到這是多麼罕見(希望!),它比學習如何使用全新的擴展更省力。 – 2017-07-17 10:03:48
@ Ry4an:謝謝,沒有注意到(不同的選擇)。 – 2009-11-12 21:50:55
是的,我花了一段時間才找到那個,因爲你的問題更清楚。 – 2009-11-12 21:52:22