実際にはgit staging area
は何ですか?Git:ステージングエリアのワークフロー
私はunstaged files
としか動作しませんでしたが、すべてがうまくいっていると思うと、私はそれらをコミットするためにステージングします。
しかし、私はそれはいくつかの理由でそこにあると思いますが、私はそれが私に役立つワークフローを手に入れることができません。
アイデア?
実際にはgit staging area
は何ですか?Git:ステージングエリアのワークフロー
私はunstaged files
としか動作しませんでしたが、すべてがうまくいっていると思うと、私はそれらをコミットするためにステージングします。
しかし、私はそれはいくつかの理由でそこにあると思いますが、私はそれが私に役立つワークフローを手に入れることができません。
アイデア?
Gitステージの有用な目的の1つは、コミットする予定の作業を保持できる場所として役立ち、作業ディレクトリを引き続き使用できる状態です。これは、例を使って説明しておくとよいでしょう。フィーチャの作業が終了し、すべてのテストと独自のコードレビューを完了したとします。この作業は今すぐコミットする準備ができていますので、変更したすべてのファイルをgit add
にしてください。これにより、これらのファイルでステージが満たされ、この時点で作業ディレクトリとステージの両方が同期します。
しかし今、最後の段階で小さな変更を加える必要があると思います。または、最後にフィーチャーに何かを追加するインスピレーションが得られます。機能そのものは基本的に完全なものなので、既に行った良い作業を変更したくないです。作業がステージング領域にあるので、作業ディレクトリを適切に変更できます。新しい仕事をしたい場合は、もう一度git add
することができます。さもなければ、あなたはそのままの状態を保ち、コミットして、作業を進めることができます。
ところで、途中で作業ディレクトリファイルをステージのバージョンにリセットする場合は、git checkout FILE
で実行できます。
eGit for Eclipseのような多くのGitプラグインは、ステージ上でスキップするように見えますが、しばしば作業ディレクトリファイルからコミットするように見えます。
プログラマーが次のコミットの一部であるべきものだけを変更するのは難しいです。ステージング領域は大いに役立ちます - 様々なロギング/デバッグ文や無関係の変更を無視して正しいビットを選んで、コミットするだけです。そうすることで、変更のバッチから複数のきれいなコミットを作成することができます。
コミットに含める内容は、ファイル単位ではなく文字単位から選択することができます。
バグを掘り下げて、一時的なデバッグステートメントをたくさん追加しているとします。そして今、あなたはいくつかの問題を修正し、修正をコミットしたいが、それ以上のものがあると思われるので、依然としてデバッグ・ステートメントが必要です。したがって、git gui
を起動し、diffのコンテキストメニューのStage hunk
/Stage line
エントリを使用して修正を単に実行し、コミットします。 git add -i
から同じ効果を得たり、差分をgit add -e
で編集したり、vim-fugitiveのようなものでステージを微調整することができます。
また、ステージを使用して保留中の変更を分割することもあります。あなたが何かに取り組んでいる、いくつかの部分を行っていると言うが、今は少し実験する必要があります。あなたが自信を持っている部分や、帰ってきてもいいと思う部分を演奏して実験を続けると、実験が元に戻ってこなかったら簡単に元に戻すことができます。
この質問は定期的に尋ねられ、可能な回答がたくさんあります(https://www.google.com/#q=git+why+staging+areaを参照)。ステージング領域は、一般的なバージョン管理では必要ありません。例えば、MercurialはGitによく似ていますが、Gitには似ていますが、この場合は部分的にGitがリークする実装メカニズムです。リークされた実装メカニズムは、人々が非常に有用であると判明した能力を提供する。 – torek