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