私はgitを学習していますが、2つのステップのコミットプロセスがあることに気づきました。
git add <files>
git commit
最初のステップでは、「ステージング領域」または「インデックス」と呼ばれるものにリビジョンを配置します。
私が興味を持っているのは、なぜこの設計決定が行われるのか、そしてその利点は何ですか?
また、gitユーザーとしてこれを行うか、単にgit commit -a
?
私はこの機能を持たないbzr(Bazaar)から来たので、これを尋ねます。
作業を個別のコミットに分割します。おそらく、ファイルを開いて1行の修正を書き込むことが何度もありましたが、同時に、書式が間違っていた、一部のドキュメントが改善されていた、または他の無関係な修正があった。他の [〜#〜] rcs [〜#〜] sの場合、それを書き留めるか、メモリにコミットし、目的の修正を完了し、コミットしてから、修正に戻る必要がありますその他のもの(または無関係なもので泥棒のコミットを作成する)。 Gitを使用すると、一度にすべてを修正し、git add -i
またはgit-gui
を使用して、1行を個別にステージング+コミットできます。
ビルドを壊さないでください。複雑な変更に取り組んでいます。したがって、さまざまなことを試してみてください。いくつかは他のものよりうまく機能し、いくつかは物事を壊します。 Gitを使用すると、変更によって状況が改善されたときにステージングし、変更が機能しなかったときにcheckout
(またはさらに調整)を行います。エディターの元に戻す機能に依存する必要はありません。ファイルごとだけでなく、ファイルレベルのミス(コミットされていないファイルの削除など)の代わりに、リポジトリ全体をcheckout
することができます。または、不適切な変更後に保存して閉じる)の場合、多くの作業が失われることはありません。
私にとっての利点の1つは、ファイルを段階的に「追加」できることです。コミットする前に、各ファイルを確認します。ファイルを確認したら、追加します。 git status
またはgit diff
を実行すると、gitは変更されてまだ追加されていないファイルのみを表示します。すべてのファイルを確認して追加したら、コミットできます。
ですから、ステージングエリアは非常に役立ちます。
いいえ、git commit -a
は使用しません。ただし、git add -u
をよく使用します。このようにして、コミットする対象を視覚化できます。
利点は非常に単純です。いつコミットするかを完全に制御できます。そのためには、git add -p
コミットするlinesを制御します。
私が気に入っている利点の1つは、変更の一部をコミットできることです。つまり、git add -eを使用します。時々コミットする頻度が低く、git add -eコマンドを使用すると、自分の変更をある程度解くことができます。