git addとgit commitのundo方法(ver.2)

チートシート作りの練習としてとりあえずaddとcommitで何が起きて、各段階でのundo方法がなんなのかを図にしてみた(注:間違いがあるので最後まで読んでね)

縦3つでセットで1つの時点だってのがわかりにくいのでもうちょっと縦幅を縮めた方がいいのかもなぁ?

あ、あと下の一番右だけ省略されているHEADを明示してみたけど、そこを明示するなら右から二番目も明示すべきだし、それをやると長過ぎてうっとうしいからやっぱ両方省略した方がいいかな。

p.s.

左端のgit rm Aはgit rm --cached Aの間違い。ここでgit resetではダメなのは、この時点ではまだinitial commitができていないから。

git resetにを指定できるのは--hardや--softの付いていない時だけだった…。checkoutを使うのがよさそう。thanks id:Yuichirou !

version.2

欄外解説として「--」について書く必要がありそう。ファイルのつもりでAを指定して、もしAって名前のリファレンスが存在したらそのリファレンスが指すコミットオブジェクトであると解釈されてしまわないか?逆にリファレンスのつもりでHEADって指定して、もしHEADって名前のファイルが存在したらそのファイルを指したんだと誤解されないか?という曖昧さをなくすために「--はHEADの意味にしかならない」っていう特殊なキーワードを導入してある、という解説でいいのかな。

あと、僕はリポジトリを作成してからのストーリーのつもりで書いたのだけど「既存のリポジトリにファイルを追加して、更新するストーリーだ」という解釈もあるみたいで、冷静に考えるとリポジトリを新しく作ることとかinitial commitを失敗してundoしたいこととかめったにないと思うからそちらのストーリーを書いたほうがいいと思った。リポジトリの作り方に関しては、githubの説明みたいに「リポジトリを作るってのはgit initしてREADMEをコミットするまでのことだぜ」がいいんじゃないかと。