はじめに
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使う際の基本の動きの整理ということで。