📖
gitの初回コミットを消したいとき
結論
git update-ref
を使う。
背景
2回目〜最新までのコミットを取り消したいときは、git reset
が使える。
$ git reset --soft ^HEAD # 最新のコミット履歴だけを消す
$ git reset --hard ^HEAD # 最新のコミット履歴を消し、変更内容も元に戻す
しかし、初回のコミットの取り消しは、git reset
ではできない。
$ git reset --soft HEAD^
fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
初回コミットの消し方
初回のコミットを消すときは、git log
でコミット履歴が1つだけの状態で、git update-ref -d HEAD
を使用する。
$ git update-ref -d HEAD
$ git log
fatal: your current branch 'main' does not have any commits yet
git help -a
で説明を見ると、このようになっている。
update-ref Update the object name stored in a ref safely
update-refとは
元々update-ref
は、ブランチの参照先を変更する用に使うらしい。
gitを普段使いしている分にはなかなか使わないコマンドだと思う。
$ git update-ref refs/heads/master 1a410efbd13591db07496601ebc7a059dd55cfe9
Discussion