mercurialでコミットを修正する

histeditでコミットログの修正、もしくはコミットの内容を修正したい場合どうするか


リポジトリの状態。
最初のコミットを修正してみる。

$ hg glog  --style=compact
@  1[tip]   19f48661a270   2013-08-21 17:02 +0900   brainstorm
|    add .hgignore
|
o  0   b4770d0d6e8c   2013-08-21 17:02 +0900   brainstorm
     add README.txt


hg histedit 0を実行するとエディタが開く

pick b4770d0d6e8c 0 add README.txt
pick 19f48661a270 1 add .hgignore

# Edit history between b4770d0d6e8c and 19f48661a270
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  f, fold = use commit, but fold into previous commit (combines N and N-1)
#  d, drop = remove commit from history
#  m, mess = edit message without changing commit content
#


「add README.txt」のコミットの内容を変更したいので、pickをeに変更する

e b4770d0d6e8c 0 add README.txt
pick 19f48661a270 1 add .hgignore

# Edit history between b4770d0d6e8c and 19f48661a270
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  f, fold = use commit, but fold into previous commit (combines N and N-1)
#  d, drop = remove commit from history
#  m, mess = edit message without changing commit content
#


エディタを閉じると、eを指定したコミットの前状態になる

$ hg histedit 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
adding README.txt
Make changes as needed, you may commit or record as needed now.
When you are finished, run hg histedit --continue to resume.
$ hg st
A README.txt


README.txtの内容を変更するなどする。
hg hietedit --continueをするとエディタが開くのでコミットメッセージを変更したい場合は修正する。

add README.txt



HG: Enter commit message.  Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: BrainStorm <brainstorm@example.com>
HG: branch 'default'
HG: added README.txt

エディタを保存して終了


リポジトリの状態

$ hg glog --style=compact
@  1[tip]   006e25042018   2013-08-21 17:02 +0900   brainstorm
|    add .hgignore
|
o  0   357a90c02b82   2013-08-21 17:02 +0900   brainstorm
     add good README.txt

コミットログが変わっていること、修正したコミットのIDが「b4770d0d6e8c」から「357a90c02b82」に変わったことがわかる。

こんな感じでわりと自由にコミット履歴を修正することができる


関連 : mercurialでコミットをまとめる方法 - brainstorm
関連 : mercurialでコミットを並べ替える方法 - brainstorm