私はバージョン管理の初心者ですが、「コミット」とは基本的に、作業中の新しい「現在の」バージョンを更新しながらバックアップを作成することだと理解しています。
私が理解できないのは、実際的な観点からステージングが何のためにあるのかということです。ステージングは名前だけ存在するものなのか、それとも目的を果たすものなのか? コミットすると、とにかくすべてがコミットされるのですよね?
編集: 用語を混同しているかもしれません。「ステージングされた」ファイルは「追跡された」ファイルと同じものですか?
ベストアンサー1
コミットすると、インデックスの変更 (「ステージングされた」ファイル) のみがコミットされます。これには多くの用途がありますが、最も明白なのは、作業中の変更をより小さな自己完結型の部分に分割することです。おそらく、機能を実装しているときにバグを修正したのでしょう。git add
そのファイルだけ (またはgit add -p
ファイルの一部だけを追加) をコミットし、そのバグ修正をコミットしてから、他のすべてをコミットすることができます。 を使用する場合は、コミットの直前にすべてをgit commit -a
強制的にコミットするだけです。ステージング ファイルを活用したい場合は、add
を使用しないでください。-a
複数のコマンドを使用して、ステージングされたファイルを中間作業コピーとして扱うこともできます--cached
。たとえば、git diff --cached
はステージとの違いを表示するHEAD
ので、他の作業中の変更を混ぜることなく、コミットしようとしている内容を確認できます。