はじめに
以前、【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^)/