0

私は Perforce のベテランで、組織を git に移行しています。私が立ち往生していることの1つは、大規模なコミットを管理する方法です(一度に多くの異なる変更について言及しているのではなく、最適ではないことはわかっていますが、一度に多くのファイルに影響を与える単一の種類の変更について言及しています)。たとえば、多数のファイルで呼び出される関数にパラメーターを追加するとします。ビジュアル diff ツールで git コマンド ラインを使用して、コミットする前にすべての変更を確認する最善の方法は何ですか? 実際には、このレビューを一定期間にわたって分散させるか、ファイルの一部をレビューした後にさらにいくつかの変更を加えてから、未レビューのファイルに戻る場合があります。

要するに、私が探しているのは、ファイルを一度に 1 つずつ簡単に difftool し、レビュー済みとしてマークする方法です。多くの UI ソリューションがあることは知っていますが、ネイティブの git ソリューションに興味があります。

 

却下されたアイデア:

  1. すべてのファイルをステージングせずに保持してから、一度に 1 つずつ diff を実行し、差分が気に入った場合はファイルをステージングします。この考え方の問題点は、ファイルが多くのパスに散らばっている可能性があるため、すべてのファイルの完全なパスを入力して差分を作成する (そしてステージングする) のが面倒なことです。
  2. インタラクティブな追加モード ( git add -i) を使用します。この考えの問題点は、ステージングされていないファイルを比較できないことです。つまり、これが機能するには、すべてをステージングする奇妙な回転を行う必要があり、ファイルがレビューに合格した後、実際にステージングを解除し、最後にステージングされたファイルとステージングされていないファイルを交換してからコミットします。きもい。
  3. パッチモードを使用してください。これは非常にクールですが、ビジュアル difftool では機能しないようです。
  4. を使用しgit guiます。これは実際には非常に近いですが、ダブルクリックまたはホットキーで各ファイルに対して difftool を簡単に実行する方法を見つけられませんでした。

 

皮肉なことに、git add -idiff の意味を逆にしなければ、私のニーズに完全に対応します。つまり、デフォルトでは、diff はステージングされていない変更に対して機能しますが、インタラクティブな追加中は、diff はステージングされた変更に対してのみ機能します。git add特にポイントはファイルをステージングすることなので、これは私にとって困惑しています。

すべての考えは大歓迎です!ご協力ありがとうございました。

4

1 に答える 1