- 2010年9月30日 4:07 PM
- バージョン管理
コミットした後に小さなミスを修正したい場合に、直前のコミットを取り消す。
$ git reset --soft HEAD^
これは、最新(HEAD)の1つ前のバージョン(HEAD^)にリセットする。ということなので、直前のコミットを取り消す動作となる。
HEADは、最新のコミットで、HEAD^は、1つ前、HEAD^^は2つ前のコミットになる。
もちろん、コミットのハッシュ値を使ってもOK。
「–soft」は、作業ツリーには変更を加えない指定、代わろに「–hard」を指定すれば、作業ツリーに加えた変更も元に戻る。
※間違えてgit reset –hard した場合は、慌てずに「git reflog」で復活。
ref. http://subtech.g.hatena.ne.jp/secondlife/20090629/1246255508
ref. http://d.hatena.ne.jp/magicalhat/20091030/1256904495
なお、リセットされたコミットの内容は、「ORIG_HEAD」という名前で参照可能。
$ git diff ORIG_HEAD
で、現在の作業ツリーとコミットされていた内容で差分を表示出来る。
リセットして、修正後に再度コミットを行う場合は、次のようにすると、前回のコミットメッセージの内容が表示されるので、再編集してコミットできる。
$ git commit -a -c ORIG_HEAD
git commitに「–amend」オプションをつけて実行すると直前のコミットを訂正することが可能。
$ git commit (修正) $ git commit --amend
これは、以下の操作とほぼ同じ。
$ git commit $ git reset --soft HEAD^ (修正) $ git commit -c ORIG_HEAD
ref. http://sourceforge.jp/magazine/09/03/16/0831212/3
【関連記事】
- 新しい: 干支(えと)
- 古い: UbuntuにSun社のJavaをインストールする。
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://redtower.plala.jp/2010/09/30/git-git-reset.html/trackback
- トラックバックの送信元リスト
- gitで直前のコミットを取り消す。(git reset) - redtower's memo より