問題タブ [git-difftool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Git:コミットする前にファイルをレビュー済みとしてマークするにはどうすればよいですか?
私は Perforce のベテランで、組織を git に移行しています。私が立ち往生していることの1つは、大規模なコミットを管理する方法です(一度に多くの異なる変更について言及しているのではなく、最適ではないことはわかっていますが、一度に多くのファイルに影響を与える単一の種類の変更について言及しています)。たとえば、多数のファイルで呼び出される関数にパラメーターを追加するとします。ビジュアル diff ツールで git コマンド ラインを使用して、コミットする前にすべての変更を確認する最善の方法は何ですか? 実際には、このレビューを一定期間にわたって分散させるか、ファイルの一部をレビューした後にさらにいくつかの変更を加えてから、未レビューのファイルに戻る場合があります。
要するに、私が探しているのは、ファイルを一度に 1 つずつ簡単に difftool し、レビュー済みとしてマークする方法です。多くの UI ソリューションがあることは知っていますが、ネイティブの git ソリューションに興味があります。
却下されたアイデア:
- すべてのファイルをステージングせずに保持してから、一度に 1 つずつ diff を実行し、差分が気に入った場合はファイルをステージングします。この考え方の問題点は、ファイルが多くのパスに散らばっている可能性があるため、すべてのファイルの完全なパスを入力して差分を作成する (そしてステージングする) のが面倒なことです。
- インタラクティブな追加モード (
git add -i
) を使用します。この考えの問題点は、ステージングされていないファイルを比較できないことです。つまり、これが機能するには、すべてをステージングする奇妙な回転を行う必要があり、ファイルがレビューに合格した後、実際にステージングを解除し、最後にステージングされたファイルとステージングされていないファイルを交換してからコミットします。きもい。 - パッチモードを使用してください。これは非常にクールですが、ビジュアル difftool では機能しないようです。
- を使用し
git gui
ます。これは実際には非常に近いですが、ダブルクリックまたはホットキーで各ファイルに対して difftool を簡単に実行する方法を見つけられませんでした。
皮肉なことに、git add -i
diff の意味を逆にしなければ、私のニーズに完全に対応します。つまり、デフォルトでは、diff はステージングされていない変更に対して機能しますが、インタラクティブな追加中は、diff はステージングされた変更に対してのみ機能します。git add
特にポイントはファイルをステージングすることなので、これは私にとって困惑しています。
すべての考えは大歓迎です!ご協力ありがとうございました。
meld - meld が最前面で自動的に開かない
MacBook Proを使用しています。meld で動作するように git difftool をセットアップしました。これが私の ~/.gitconfig です:
git difftool を実行すると、meld がバックグラウンドで起動します。差分を表示するには、メルド アイコンをクリックする必要があります。(Command + Tab は機能しません) また、1 つのファイルを閉じると、バックグラウンドで別のファイルが再び開きます。そのため、メルド アイコンをもう一度クリックして差分を表示する必要があります。
これは技術的には機能しますが、非常に不便です。メルドが最前線で差分を起動するように、この問題を修正する方法があるかどうか疑問に思っていました。