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^するのでこういうケースで困ることはあまりないと思う。
まとめ
初回コミットくらい落ち着いて操作しましょう。(反省