Git のステージングエリア
Git のステージングエリアとは?
Git では「コミット」という作業を行うことで、リポジトリを更新します。
このとき「コミット」はステージングエリアの情報を元に行われます。
言い方を変えれば、必ずしも変更を行ったファイルの全てがコミットに関わるわけではありません。 あるファイルの変更を行ったら、そのファイルをステージングエリアに追加することではじめて、リポジトリに追加されたり、既に追加されているファイルなら更新されることになります。
Git のステージングエリアは追加時点のスナップショット
ファイルをステージングエリアに追加したときに、スナップショットが作成されます。
コミット時には、ステージングエリアに作成されたスナップショットがリポジトリに反映されます。
スナップショットが一度作成されると、ファイルを変更してもスナップショットは自動的には更新されません。
例えばファイル a.txt をステージングエリアに追加し、 コミットする前に a.txt を書き換えて保存したとします。 この状態でコミットすると、書き換える前の状態がリポジトリに反映されます。
Git のステージングエリアにファイルを追加
ステージングエリアにファイルを追加するには、 git add コマンドを実行します。
ファイル foo.c をステージングエリアに追加するには、次のコマンドを実行します。
git add foo.c
変更があった、全てのファイルを追加するには次のコマンドを実行します。
git add .
ワイルドカード * でファイルを指定して、ステージングエリアにファイルを追加するには次のようにコマンドを実行します。
git add *.js
Git のステージングエリアへの追加を取り消す
ステージングエリアに追加したファイルを、ステージングエリアから削除するには git reset コマンドが使えます。
例えば、ステージングエリアに追加した foo.c をアンステージ (ステージングエリアから削除) するには、次のコマンドを実行します。
git reset foo.c
このコマンドは git restore --staged foo.c と意味は同じです。
ステージングエリアから、全てのファイルを削除するには、ドット . で全てのファイルを表すので、次のコマンドが使えます。
git reset .
Git で最後のコミットからの変更を確認
git status コマンドを使うと、 前回のコミットからの作業フォルダ内の変更状況を確認することができます。
コマンドの結果は、次のスクリーンショットのように分類されて表示されます。
- 「既にステージングエリアに追加されているファイル」(上段)
- 「変更があるがまだステージングエリアに追加されていないファイル」(中断)
- 「追跡されていないファイル」(下段)
こうした状況を確認しつつ、漏れのないように必要なファイルをステージングエリアに追加します。
Git で最新のコミット以降の変更を取り消す
最新のコミット HEAD 以降の変更を取り消して、 クリーンな状態に戻すには次のコマンドを実行します。
git reset HEAD --hard
さらに、次のコマンドで、トラックされていないファイルやディレクトリを削除。
git clean -fd