問題タブ [git-bisect]
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 - 1 つのブランチのコミットでのみ「git bisect」する方法は?
私が現在取り組んでいるプロジェクトでは、各機能を独自のブランチに保持し、機能の準備ができたらマスターにマージします。各機能ブランチ内のコミットには、完成して安定するまで、多くの「WIP」および他の機能の破壊的な機能が含まれる場合があります。
git bisect
とにかく、マスター ブランチのコミットは唯一の (おそらく) 安定したものなので、そのブランチだけにしたいのです。
git bisect
1 つのブランチだけに制限する方法はありますか?
algorithm - 一連の git プロジェクトが壊れたときを見つけるアルゴリズムは?
N
一緒に release/ repository を定義する git プロジェクトがあるとしましょうR
。
R
健全性テストに合格した場合T
、それを良いR
と呼び、失敗した場合は悪いと呼びますR
。
私はスクリプトを考え出し、将来的にそれをgoogle repoにプッシュしたいと考えています。これは、 git プロジェクトによって定義されgit bisect
たリポジトリのメカニズムを一般化します。R
N
目的は、R
best という名前の最新の商品を見つけることですR
。VonC は素晴らしいサブモジュールを使用したソリューションを提案しましたが、 git プロジェクト (Android など)repo-google
を含むベースのリポジトリのソリューション/アルゴリズムを探しています。N
git - git bisect に渡す最新の適切なコミットを見つける
Git リポジトリで何かが失敗していることに突然気付いたとします。しかし、数コミット前に機能していたことは知っていますが、どのコミットかは覚えていません。git bisect を実行するために「適切な」コミットを見つけようとする代わりに、Git に (おそらく bash スクリプトを使用して) 尋ねたいのですが、最新の「適切な」コミットは何ですか?
少し前のコミットを選択してそれを良いものとして使用しないもう 1 つの理由は、私のレポには多くの悪いコミットと良いコミットが混在しているためです。直線的ではありません。
では、最新のコミットから始めて必要なだけループし、悪い場合は 1 を返し、良い場合は 0 を返すコマンドを実行するにはどうすればよいでしょうか?
git - `git bisect` または `git log -S --all` によって検出されないマージ コミットによって行われた変更
ファイルを修正し、git
リポジトリにコミットしました。
しばらくして、それが後退していることに気づきました。どのコミットで修正が行われたか知りたかったので、 と を試してみましたgit bisect
。git log --all -S TERM
ここで、「TERM」は修正によって追加された文字列で、プロジェクトのどこにも表示されませんでした。
無関係なコミットをgit bisect
非難し、git log --all -S TERM
TERM を追加したコミットのみをリストし、「マスター」のファイルに存在しなくなったにもかかわらず、それを削除したコミットをリストしていないことがわかりました。
手動で検索した後、2 つのブランチ間でマージ コミットがあったことがわかりました。1 つのブランチには修正があり、1 つのブランチには修正がありませんでした。マージ作成者は、私の修正なしでブランチを選択しました (ファイルに競合がなかったため、奇妙です)。
私の質問は次のとおりです。
git bisect
マージの変更が見つからないのはなぜですか? この制限に関するマンページには何も表示されません。上記のシナリオで悪いマージを見つける別の使用方法はありますか?git log --all -S TERM
マージコミットをリストしないのはなぜですか? マンページには、「のインスタンスを導入または削除する」コミットがリストされていると書かれています。そのマージコミットは私の文字列を削除しませんか? 上記のシナリオで悪いマージを見つける別の使用方法はありますか?git bisect
上記のシナリオでとgit log -S
が役に立たない場合、悪いマージを見つける効率的な方法は何ですか? これらのツールなしで問題の変更を追跡するには、かなり時間がかかります。