Gitの最後のコミットを元に戻す方法ってどうやるの?

このエントリーをはてなブックマークに追加

質問:

間違ったファイルをGitにコミットしたんだけど、まだサーバーへはプッシュしていないんだ。

このコミットを元に戻すにはどうすればいいですか?



回答1:

コミットとやり直しを元に戻す

$ git commit -m "クソ間違えた内容"         (1)
$ git reset HEAD~ (2)
<<必要に応じてファイルを編集する>> (3)
$ git add ... (4)
$ git commit -c ORIG_HEAD (5)
  1. これを元に戻したい
  2. これによって、作業ツリー(ディスク上のファイルの状態)は変更されませんが、コミットが取り消され、コミットされていない変更が残される(git statusでは” Changes not staged for commit”になってるのでコミットする前に再度追加する必要あり)。以前のコミットにもっと多くの変更をaddしたい場合や、コミットメッセージ(注)を変更したい場合は git reset HEAD〜のように git reset --soft HEAD〜を使うことができる。
  3. 作業ツリーファイルを修正。
  4. 新しいコミットに含めるものを git addする。
  5. 変更をコミットし、古いコミット・メッセージを再使用する。 reset は古いヘッドを .git/ORIG_HEAD にコピーする。 -c ORIG_HEADcommit' を実行するとエディタが開く。エディタは最初は古いコミットのログメッセージを含み、編集することができる。メッセージを編集する必要がない場合は、-C` オプションが使えるよ。

注: commitメッセージで間違えただけなら、以前のコミットにリセットする必要はないことに注意。この場合、 (それまでの変更を戻すために)git resetすればいい。そしてgit commit --amendすると、
最後のコミットメッセージを含んだデフォルトのエディタが開くはず。

ただし、新しい変更をインデックスに追加した場合は、commit --amendは前のコミットにそれらを追加するよ。



回答2:

適宜ファイルを追加/削除する:

git rm classdir
git add sourcedir

それからコミットを修正:

git commit --amend

以前の誤ったコミットは、新しいインデックス状態を反映するために編集されるよ。
言い換えれば、それは最初から間違いを犯さなかったようなかんじに。

まだプッシュしていない場合にのみこれを行うべきであることに注意。プッシュしちゃったなら、普通に修正をコミットする必要がある。

By bdonlan | 回答日時: May 29 ‘09 at 18:16



Source: How to undo the last commits in Git?

共有 コメント