はじめに
以前、【git】git commitを取り消すという記事を書きました。
git reset xxx
で普段のcommitの取り消しは問題なくできますが、
そのリポジトリで1発目のcommitの取り消しができません。
たとえばこんな時ありますよね。
「あ、間違ってauthor違う名前でcommitしちゃった。取り消して設定しなおそ」
みたいな。
そんな時のメモ
補足
他の取り消しもぱっと見たい自分用にまとめたので参考までに。
内容
git reset xxx
でcommit取り消しできない例git update-ref -d HEAD
でcommit取り消しできる例git update-ref -d HEAD
でcommit取り消したがgithub上は違う方法で変えなきゃな例
1. git reset xxx
でcommit取り消しできない例
リポジトリを作成し、1発目にcommitしたものを取り消します。
# log確認。当然1つしかない $ git log commit 5646f5ca182c74329094f89c888d80f6b3de92fa Author: hogehoge <hogehoge> Date: Fri Apr 14 22:32:41 2017 +0900 first commit # reset --soft HEAD^で1つ前を取り消そうと思ったけどできない $ 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>...]'
2. git update-ref -d HEAD
でcommit取り消しできる例
章題に書いてますが、git update-ref -d HEAD
でできます。
# log確認。当然1つしかない $ git log commit 5646f5ca182c74329094f89c888d80f6b3de92fa Author: hogehoge <hogehoge> Date: Fri Apr 14 22:32:41 2017 +0900 first commit # $ git update-ref -d HEAD # 無事リセットされてる $ git log git log fatal: bad default revision 'HEAD'
git update-ref
についてはあまり調べてませんが、参照を更新するコマンドらしいです。
3. git update-ref -d HEAD
でcommit取り消したがgithub上は違う方法で変えなきゃな例
2の項目
で一見落着な感じでしたが、
これはlocalで行った操作が git add / git commit
のみの場合です。
git push
してgithub上にpushしてしまった場合は、以下の方法で変える必要があります。
※ ここは以前書いたのではしょりました
おわり
慣れてるつもりでもあんまりやらない操作だと
わからない事はまだまだ多いですね\(^o^)/