問題タブ [git-rev-list]
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 - マスターで間違った(リベースされていない)マージバブルをプログラムで検出する方法は?
私たちの開発プロセスでは、すべての開発者はまず自分のトピック ブランチを master にリベースしてから--no-ff
フラグとマージして、マージ バブルを作成する必要があると述べています。これにより、履歴グラフを簡単に追跡できます。ただし、開発者が実際のマージの前にリベースしない Git CLI 経由ではなく、GitHub ユーザー インターフェイス経由で誤ってプル リクエストをマージすることがあり、次のような「乱雑な」履歴グラフが生成されます。
プロセスに従った場合、次の履歴グラフが表示されます。
(コミットE
を変更し、ハッシュが異なるため、プライムに変更していますC
)'
のような壊れたマージ コミットのリストをプログラムで取得する必要がありますE
。
git rev-list --merges --format='%h %p' A..G | grep -v '^commit'
次の出力が生成されます。
最初の列はマージ コミットを表し、2 番目の列は最初の親 (マージ コミットでもあります) で、3 番目の列は 2 番目の親 (トピック ブランチからのコミット) です。ただし、壊れたマージの親関係は問題ないようです。修正された Git 履歴 (2 番目の図) でコマンドを実行すると、同じ出力が得られるため、認識できません。
プロジェクトで壊れたマージ コミットを検出する別の方法が必要です。一部のプロジェクトには 50k 以上のコミットがあり、1 回の実行に 2 秒以上かかるgit
ため、履歴内のすべてのコミットで実行する必要があるソリューションは好ましくないことに注意してください。git
git - 名前またはパスが変更されたファイルを git 履歴から削除する
プロジェクトの履歴で、削除された大きなファイルを特定しようとしています。これを行うと、順序付きリストが表示されます。
通常、次のように問題なく履歴からファイルを削除できます。
ただし、ファイルが過去に別の名前またはパスを持っていた場合、ファイルを削除すると、rev-list を再度実行すると、削除したばかりの同じファイルが同じサイズで表示されますが、過去に持っていた別のパスまたは名前。
このような履歴のパス/名前の変更を繰り返す必要がないように、rev-list を使用してオブジェクトのすべてのファイル パスを表示する方法はありますか?