mercurial教學 - Mercurial:斬首




git比較 mercurial中文 (7)

你想使用hg backout 。 這會從任何子變更集中刪除變更集所做的更改。

檢查這一點是一個很好的解釋。 水銀退出

有一個提交不起作用,所以我想放棄它而不從歷史中刪除它。

我已經從早期版本更新並承諾,從而創建了一個新的頭。

我沒有分支機構,我不想分支機構,我只想簡單地繼續與新的腦袋一樣,沒有什麼花哨,沒有融合,沒有後顧之憂,只是繼續忘記前一個。

我似乎無法找到如何做到這一點,而我開始相信這是無法完成的。 我發現的全部是關於分支的東西,或者關於合併的東西。


您可以將您的損壞的回購克隆到新的回購中,而無需克隆不需要的頭部。 然後刪除舊的存儲庫,將新創建的克隆移動到原來的位置,並繼續使用它。 這將需要一些時間,但是您將得到一個完全清潔的存儲庫,而不會出現該不需要的修訂。

hg clone --rev myGoodResition myDirtyRepo myCleanRepo

尼爾和尼克的答案都是直接的。 因為我發現自己製造了很多懸空的頭顱,所以我最終寫了一個別名來更容易地關閉頭部。 通過將這添加到您的.hgrc

[alias]
behead = !REV=$($HG id -i); $HG update [email protected] -q && $HG ci --close-branch -m "Closing dead head" && $HG update $REV -q

(如果你已經有一個[alias]部分,你可以添加它)

您現在可以通過一個單一命令關閉一個頭(而不必手動更新到其他變更集),如下所示:

$ hg behead 123

注意:別名利用了Mercurial別名可以是shell命令的事實。 這意味著這可能只適用於UNIX,而不適用於Windows。


當我想要歪曲被創造的頭腦時,我已經多次遇到這個問題。 我總是希望看到它從地球表面消失。

在您的本地副本上,獲取最新信息,然後:

  1. 找到你想要剝離頭部的起點(新的頸部開始分叉),獲取修訂號

  2. 剝去它。

來源: TipsAndTricks

來源: PruningDeadBranches#Using_strip

hg --config extensions.hgext.mq= strip -n <rev>
  1. 進行簡單的文件更新(向文件添加空白),提交並推送。

你的回購現在應該剝離頭部。 最後一步很重要,因為剝離不會產生任何可以推送到中央存儲庫的更改。 沒有最後一步,你只能在當地剝離頭部。


首先,鍵入:

hg heads

想像一下,你有三個頭:

changeset:   223:d1c3deae6297
user:        Your name  <[email protected]>
date:        Mon Jun 09 02:24:23 2014 +0200
summary:     commit description #3

changeset:   123:91c5402959z3
user:        Your name <[email protected]>
date:        Sat Dec 23 16:05:38 2013 +0200
summary:     commit description #2

changeset:   59:81b9804156a8
user:        Your name <[email protected]>
date:        Sat Sep 14 13:14:40 2013 +0200
summary:     commit description #1

比方說,你想保持最後的頭部活動(223),並關閉其餘的。

然後你會這樣做:

關閉頭#59

hg up -r 59
hg ci --close-branch -m "clean up heads; approach abandoned"

關閉頭#123

hg up -r 123
hg ci --close-branch -m "clean up heads; approach abandoned"

提交更改

hg push

不要忘記在最後切換到正確的頭部

hg up -r 223

你完成了。


使用您想要忘記的修訂將您的存儲庫更新到頭部,然後使用--close-branch選項將hg commit (標記為匿名)分支標記為關閉。 然後更新到你想要的分支的頭部,並繼續工作。

如果您使用-c選項指定hg heads ,但您仍然可以看到已關閉的分支,但默認情況下它不會顯示,並且hg merge會知道不會嘗試合併已關閉的首部。

當您第一次將這個封閉的頭部推送到另一個存儲庫時,您將需要使用hg push --force ,因為您在推送時實際上在遠程存儲庫中創建了額外的頭部。 所以告訴Mercurial,這對於--force是可以的。 拉封閉的人不會受到任何警告的困擾。


我目前正在從SVN遷移到DVCS(同時寫博客了解我的發現,我的第一個真正的博客工作......),並且我做了一些研究(谷歌搜索)。 據我所見,你可以用這兩個軟件包完成大部分的事情。 看起來git有更多或更好的實現高級功能,我確實認為與Windows的集成對於mercurial而言更好一些,使用TortoiseHg。 我知道還有Git Cheetah(我也嘗試過),但mercurial解決方案感覺更強大。

看到他們是如何開源的(對吧?)我不認為這兩者都會缺乏重要的功能。 如果有什麼重要的事情,人們會問,人們會編碼。

我認為對於常見的做法,Git和Mercurial綽綽有餘。 他們都有使用它們的大項目(Git - > linux內核,Mercurial - > Mozilla基礎項目,當然還有其他項目),所以我不認為兩者都真的缺乏。

這就是說,我對其他人對此有何評論感興趣,因為它會為我的博客工作提供重要來源;-)







mercurial