問題タブ [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.

0 投票する
1 に答える
52 参照

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

0 投票する
1 に答える
89 参照

git - 名前またはパスが変更されたファイルを git 履歴から削除する

プロジェクトの履歴で、削除された大きなファイルを特定しようとしています。これを行うと、順序付きリストが表示されます。

通常、次のように問題なく履歴からファイルを削除できます。

ただし、ファイルが過去に別の名前またはパスを持っていた場合、ファイルを削除すると、rev-list を再度実行すると、削除したばかりの同じファイルが同じサイズで表示されますが、過去に持っていた別のパスまたは名前。

このような履歴のパス/名前の変更を繰り返す必要がないように、rev-list を使用してオブジェクトのすべてのファイル パスを表示する方法はありますか?