問題タブ [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 - *興味のない*パスのリストを含むgit bisect
git bisect
これらのファイルを変更するコミットのみがテストされるように、パスのリストを渡すことができます。
追跡している問題にツリーのどの部分が関係しているかがわかっている場合は、bisect start コマンドを発行するときにパス パラメーターを指定することで、試行回数をさらに減らすことができます。
ただし、これの二重にしたいと思います。特定のファイルのみに触れるコミットを無視するので、次のようになります
andに触れるコミットはスキップしますがarch/i386/foo.c
、andinclude/asm-i386/utils.s
に触れるコミットは含まれますarch/i386/bar.c
(arch/amd64/baz.c
後者はリストされたパスの下になく、コミット全体が関連するため)。
それを行う方法はありますか?
git - 単一の作成者からのコミットのみを git-bisect する方法は?
私が解決しようとしている問題は次のとおりです。バージョン X とバージョン Y の間で、人物 P が何かを壊す変更をコミットしたことを知っています。X と Y の間で git-bisect を実行して変更を見つけることができることはわかっていますが、バイナリ検索をフィルター処理して作成者 P によるコミットのみを選択する方が高速で効率的です。 、しかし、著者でフィルタリングする方法がわかりません。
git - 「git bisect log」はすべての状態情報を保持しますか?
動機
私は二等分を行っていて、その状態を保存することを検討していましたが、後で続行するかもしれません。正確にそれができるかどうかは明らかではありませんgit bisect log
。
投稿する前に検索する
man git bisect
言います:
二分ログと二分リプレイ
リビジョンに良し悪しのマークを付けた後、次のコマンドを発行して、これまでに何が行われたかを表示します。
リビジョンのステータスを間違って指定したことがわかった場合は、このコマンドの出力をファイルに保存し、それを編集して間違ったエントリを削除してから、次のコマンドを発行して修正された状態に戻すことができます。
答えがイエスであることを示唆しているように思われるgit bisect を使用したファイティング リグレッションと比較してください。
ログの保存と再生
他の人に二分プロセスを見せたい場合は、次の例を使用してログを取得できます。
そして、それを使用して再生することが可能です:
実験
これを git 1.9.0 で確認する実験を行いました。
git bisect ログ | 差分 - bisectlog
結論
それで、このように再生した後、git bisect log
1行失われました。
ほとんどの情報が含まれていると思いますgit bisect log
が、必ずしもすべてではありません。
注: この実験で使用された二分法は、他のコミットへの手動リセットをいくつか暗示しており、これが何かを説明している可能性があります。
誰かが自分自身に同じ質問をしたことがありますか?
欠落している行を気にする必要がありますか?
git - --no-ff マージはどのように分割と非難を破りますか?
Gitワークフローの記事を理解すると、
そこで、新しいルールを追加します。「フィーチャー ブランチにマージするときは、–no-ff を使用して新しいコミットを強制します。」これで作業が完了し、先に進みます。
ある日、本番環境で重大なバグを発見し、いつ導入されたかを追跡する必要があります。bisect を実行しますが、チェックポイント コミットに到達し続けます。あなたはあきらめて手で調べます。
バグを 1 つのファイルに絞り込みます。過去 48 時間でどのように変化したかを確認します。それが不可能であることはわかっていますが、Blame はファイルが何週間も変更されていないと報告しています。マージされたときではなく、最初のコミット時に Blame レポートが変更されることが判明しました。あなたの最初のチェックポイント コミットは数週間前にこのファイルを変更しましたが、変更は今日マージされました。
ノーフバンドエイド、壊れた二等分、および非難の謎はすべて、ドライバーをハンマーとして使用しているという症状です.
git merge--no-ff
は、早送りマージを明示的に防止する場合です。ただし、あるコミットが別のコミットの直接の祖先でない場合、早送りは行われません。これは、開発中のまれなシナリオです。つまり、ほとんどのマージは非早送りタイプです。では、渡すと and--no-ff
の機能がどのように損なわれるのでしょうか?bisect
blame
java - git bisect の間、失敗したテストだけを実行しても安全ですか? または、すべてのテストを実行する必要がありますか?
git bisect コマンドを使用するときは、Java プログラムの各二分点で失敗したテストのみを実行します。ただし、git bisect に関連する多くのチュートリアルでは、「make; make test」の実行が提案されています。各ステップですべてのテストを実行する必要がある理由はありますか? よろしくお願いします。
git - git: 単純な bisect: ツールは適切なハッシュ自体を見つける必要があります
私は怠け者で、git bisect を使用して、できるだけ少ない作業で失敗を引き起こしたコミットを見つけたいと考えています。
自分で良いハッシュを提供する理由がわかりません。
これらの入力で十分だと思います:
- 成功すると 0 を返し、失敗するとその他を返すスクリプト
- git はブランチ上にあります (切り離された頭ではありません)。そしてテストは失敗します
ツール bisect (またはラッパー) は、git 履歴に戻って適切なハッシュ自体を見つけることができます。
質問: これを行うにはどうすればよいですか?
git - git bisect skip は次のコミットをどのように選択しますか?
を使用する場合git bisect
、実行git bisect skip
して現在のコミットをビルド不可/テスト不可としてマークし、代わりにテストする別のコミットを Git に選択させることができます。
Git は の後にどのコミットを試みるかをどのように決定しgit bisect skip
ますか? 実験は、それが隣接するコミットではないことを示していますが、パターンを理解することはできません.
編集:基本は二分探索であることは承知していますが、明らかにもっと複雑なことをしていることにgit bisect
興味があります。git bisect skip
実験は、隣接するコミットを選択するだけではないことを示しています。以下は、0 ~ 99 の番号が付けられた 100 個のコミットを作成し、それらの分割を開始します。最初のコミットのgit bisect
選択は途中ですが、git bisect skip
その後は多かれ少なかれランダムに選択されているようです。
git - Git: `git bisect` と `git Blame` の `--full-history` に相当
私は約 7 年間、Git を多用しています。数日前、私は驚くべき振る舞いを見つけました。を見つけgit log
、この奇妙な動作を示しgit blame
ました。友人が私の問題を解決したフラグについて教えてくれました。私自身の教育のために、 と の同等の修正があるかどうかを知りたいです。git bisect
--full-history
git log
git blame
git bisect
このレポで問題を確認してください: https://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
そのログは次のとおりです。
最初のコミットで、ファイルcoffee
が追加されました。commit3068c7d
で、「sugar」という行をcoffee
ファイルに追加しました。しかし、その後、このブランチをdevelopment
ブランチにマージしましたが、そのマージでミスが発生し、「sugar」行が削除されてcoffee
空のままになりました。その後、別の commitb7a8d7a
が追加され、無関係な変更が加えられました。
今、私は自分のコーヒーを見て、砂糖が入っていないことを発見しました. コーヒーに砂糖を入れたことをはっきりと覚えています。を実行するgit log coffee
と、次の出力が得られます。
それでおしまい。git log
砂糖を追加した元のコミットも、それを削除したマージも示していません。欠落している 2 つの非常に関連性の高いコミット。
手動でコミットを見つけるのがはるかに難しい大規模なエンタープライズ リポジトリで発生したため、この問題に約 1 時間イライラしました。
また、 と を使用して 2 つのコミットを特定しようとしましたが、これらのツールはどちらも 2 つのコミットを無視しましたgit bisect
。すべてのandアクションを完了した後、間違ったコミットを指摘してくれました。git blame
git bisect
git bisect bad
git bisect good
--full-history
それから、最初に言ったように、友人が私を旗に向けました:
関連する 2 つのコミット (砂糖を追加するコミットとそれを削除するマージ) が示されているので、これは嬉しいことです。だから私の問題は解決しました。でも、作り方や振る舞い方も知りたいです。git bisect
git blame
誰かがたまたま知っていますか?
jenkins - ジェンキンスでGitバイセクト
Jenkins 2.X は本当に良くなりました - それを使って git bisect を実行できるようになったのだろうか。現在、ジェンキンスがいつ見たかに応じて、コミットはジョブにバンドルされています。これは、ジョブが合格したときに問題ありません。しかし、ジョブが失敗した場合、ジェンキンスが bisect スタイルに戻って、壊れているコミットを見つけることができればよいでしょう。理想的には、Jenkinsfile は同じままです。