初回のコミットを取り消したいときにはgit update-refを使う
gitで間違えて最初のコミットをしてしまった場合の話。コミットに含めたいファイルとかをついうっかり追加してしまった場合の対処法。
この場合、git reset
などで戻ることはできない。git update-ref
を使おう。
サンプル
-> % cd /tmp/; mkdir sample-git; cd sample-git -> % git init Initialized empty Git repository in /private/tmp/sample-git/.git/ -> % git add -> % touch README -> % git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) README nothing added to commit but untracked files present (use "git add" to track) -> % git add . -> % git commit -m 'first commit' [master (root-commit) 801a68b] first commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README -> % git status On branch master nothing to commit, working directory clean
このときのgit log
は以下のようになっている。
commit 801a68ba564098cb41f1dcaefec9fb3eb0ab7472 Author: Kenta Suzuki <myaddress@sample.com> Date: Fri Mar 28 09:57:29 2014 +0900 first commit
ここでgit update-ref
する。
-> % git update-ref -d HEAD -> % git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README
これでコミット前の状態に戻ることができる。もちろん初回コミットの場合以外にも使えるが、普段はgit reset --soft HEAD^
するのでこういうケースで困ることはあまりないと思う。
まとめ
初回コミットくらい落ち着いて操作しましょう。(反省