1. ホーム
  2. git

[解決済み] なぜGitでコミットする前にステージが必要なのですか?

2022-07-09 12:52:08

質問

私はバージョン管理の初心者ですが、quot;commit" は基本的に、作業中のものの新しい「現在の」バージョンを更新しながらバックアップを作成することだと理解しています。

私が理解していないのは、実用的な観点からのステージングとは何かということです。ステージングは名前だけ存在するものなのでしょうか、それとも目的を果たすものなのでしょうか。コミットするとき、それはとにかくすべてをコミットするつもりでしょう?

編集:私は用語を混同している可能性があると思います。ステージングされた」ファイルは「追跡された」ファイルと同じものですか?

どのように解決するのですか?

コミットするとき、インデックスにある変更("staged"ファイル)だけをコミットするつもりです。 これには多くの用途がありますが、最も明白なのは、作業中の変更をより小さく、自己完結したピースに分割することです。 たとえば、ある機能を実装しているときにバグを修正したとします。 その場合 git add を使えば、そのファイルだけ (あるいは git add -p でファイルの一部だけを追加します!) そして、他のすべてをコミットする前にそのバグフィックスをコミットします。 もしあなたが git commit -a を使用している場合は、強制的に add を強制することになります。 そのため -a は使わないでください。

また、ステージングファイルを中間的な作業コピーとして扱うために --cached を多くのコマンドに追加してください。 例えば git diff --cached とはステージがどのように異なるかを示します。 HEAD との違いを示すので、他の作業中の変更と混同することなく、何をコミットしようとしているのかを確認することができます。