Edited at

MercurialでGit stashと同様の機能(Shelve)を使う

More than 1 year has passed since last update.


はじめに

Gitのstashって一時的に変更を退避できてめっちゃ便利ですよね。

しかし大人の都合でGit以外を使わなきゃいけないシーンに直面したりしますよね。ワガママ言ってられないもんです。

というわけで表題にもあるようにstashをMercurial(hg)でも使えるようにします。


以前は

Version 2.7までは標準機能ではなかったので以下のExtentionをインストールして使う必要がありました。

https://mercurial.selenic.com/wiki/ThirdPartyShelveExtension


現在は

Version 2.8からは本体に取り込まれたので.hgrcに記述してあげるだけで利用できるようになりました。


セットアップ

.hgrc[extensions]に設定を追加してあげます。


~/.hgrc

[extensions]

shelve=


利用方法


hg shelve

変更を加えたファイルを一時的に退避できます。

git stashと同じですね。

➜ hg status

M app/controllers/users/sessions_controller.rb

➜ hg shelv
shelved as stg
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

➜ hg status


hg unshelve

shelveしたファイルを戻します。

git stash popと同じですね。

➜ hg status

➜ hg unshelve
unshelving change 'stg'

➜ hg status
M app/controllers/users/sessions_controller.rb


その他

git stashと同様に複数のshelveできたり名前付きshelveを作成したりできます。詳しくは本家のドキュメントをご覧くださいな。

https://www.selenic.com/mercurial/hg.1.html#shelve