はじめに
gitでファイルを作業エリア(Work)からステージングエリア(Staging)に追加し、コミット(Commit)するだけならgit addとgit commitだけで事足りるのですが、ステージングエリアからファイルを戻したり削除したりすると、作業エリアとステージングエリアでファイルがどういう状態になっているか混乱したため整理。
gitの基本コマンド
作業エリア、ステージングエリア、コミット履歴を行き来する際の基本的なコマンドのまとめになります。
まずはaddとcommit
緑枠がgitコマンド。gitやオプションは省略しているので適宜読み替えること。
diffで隣同士を比較
git diffは作業エリアとステージングエリア、もしくはステージングエリアとコミット履歴の比較を実施する。
--stagedオプションの有無でお隣さんの位置が変わるが隣同士のdiffをとるのは一緒。

resetでaddをなかったことに
resetコマンドはaddでステージングエリアに登録した情報を削除する。
削除されるのはステージングエリアの変更だけで、作業エリアのファイルには影響ない。
うぁーこんなところでgit addなんかするんじゃなかった・・・とaddしたことを反省する際に利用するコマンド。
restoreはやらかした過ちを消し去りたいとき
restoreは自分がやった変更や修正を無かったことにしたい時、隣にある情報から引き戻す。
人に見せたくない恥ずかしい修正をやらかしてしまい、なかったことにしたい場合に利用する。コミット前なら他の人に見られることはない。
git checkout -- Aでもgit restore Aと同じことができるけど、無理に色々覚える必要ない。

rmはコミットまでやってしまった恥ずかしい情報を消したいとき
ログには残るがコミットした情報を消したい時に利用。
-fや--cachedオプションつけると、作業エリアやステージングエリアで削除しないようにできるが、コミットしたファイルを消すのがメインなので省略。
git rmで注意するのは、消したいファイルをないものとしてコミットするということ。
下記の例では、git rm Aで作業エリアとステージングエリアの両方からAファイルが消える。しかしコミット履歴にはAの情報が残っている。ここでコミットすると、ステージングエリアにAファイルが存在しないのでコミット履歴から消える。
やっぱ消すのやーめた、と気が変わった場合はrestoreで戻せる。
さいごに
リモートとPush/Pullしたり、ブランチ切り替えの内容は含んでいませんが、git使う際の基本の動きの整理ということで。


