メモの日々


2011年04月20日(水) [長年日記]

[dev][howto] Gitでコミット前のマージを取り消す

% git merge --no-ff --no-commit ブランチ名

でブランチの内容をマージだけした(コミットはしない)後、そのマージを取り消して元の状態に戻したいときは、HEADに戻ればいいので

% git reset --hard HEAD

とすればよい。マージ時に--no-commitオプションを付けずコミットまでした場合は、ORIG_HEADに戻ればいいみたいだけれど、試してないのでよくわからない。

(追記)

resetに--hardを付けるのは、まだコミット前であり、元に戻したいのがワークツリーだから。--hardはワークツリーも含めて元に戻すためのオプション。

の図が分かりやすかったのでメモ。

git resetには --merge, --keep というオプションもあって、これらの意味はよくわからない。マニュアルの後半に表を使った説明があるが、難しくて理解できなかった。