質問:
間違ったファイルをGitにコミットしたんだけど、まだサーバーへはプッシュしていないんだ。
このコミットを元に戻すにはどうすればいいですか?
回答1:
コミットとやり直しを元に戻す
|
- これを元に戻したい
- これによって、作業ツリー(ディスク上のファイルの状態)は変更されませんが、コミットが取り消され、コミットされていない変更が残される(
git statusでは” Changes not staged for commit”になってるのでコミットする前に再度追加する必要あり)。以前のコミットにもっと多くの変更をaddしたい場合や、コミットメッセージ(注)を変更したい場合はgit reset HEAD〜のようにgit reset --soft HEAD〜を使うことができる。 - 作業ツリーファイルを修正。
- 新しいコミットに含めるものを
git addする。 - 変更をコミットし、古いコミット・メッセージを再使用する。
resetは古いヘッドを.git/ORIG_HEADにコピーする。-c ORIG_HEADでcommit' を実行するとエディタが開く。エディタは最初は古いコミットのログメッセージを含み、編集することができる。メッセージを編集する必要がない場合は、-C` オプションが使えるよ。
注: commitメッセージで間違えただけなら、以前のコミットにリセットする必要はないことに注意。この場合、 (それまでの変更を戻すために)git resetすればいい。そしてgit commit
--amendすると、
最後のコミットメッセージを含んだデフォルトのエディタが開くはず。
ただし、新しい変更をインデックスに追加した場合は、commit --amendは前のコミットにそれらを追加するよ。
回答2:
適宜ファイルを追加/削除する:
|
それからコミットを修正:
|
以前の誤ったコミットは、新しいインデックス状態を反映するために編集されるよ。
言い換えれば、それは最初から間違いを犯さなかったようなかんじに。
まだプッシュしていない場合にのみこれを行うべきであることに注意。プッシュしちゃったなら、普通に修正をコミットする必要がある。
By bdonlan | 回答日時: May 29 ‘09 at 18:16