18

コミット ID を使用する代わりに、現在のコミットからの距離に基づいてコミットをチェックアウトできるコマンドはありますか?

使用事例

基本的に、ビルドサーバーで次のことを行うためにcronジョブタイプのスクリプトを設定することを考えています:

  • 特定の git ブランチの最新のものをプルダウンします (git pull dev)。
  • ビルドして、テストを実行します。
  • パスのパーセンテージが最後に保存されたパーセンテージよりも低い場合:
    • パーセンテージが変更されたコミットが見つかるまで、再帰的にコミット、ビルド、テストを実行します。
    • リグレッションを引き起こしたコミットをログに記録します。

これがどのように連動するかについては大まかなアイデアがありますが、定期的に 1 つのコミットに戻ることができない限り機能しません。

特定のコマンドがない場合、コミットログをgrepして、毎回最初のログを取得できると思いますか?

アイデアや助けに感謝します!

とは異なり: Git で最後のコミットを元に戻す方法は?

「N」回のコミットに戻りたい。

4

2 に答える 2

30
git checkout HEAD~N

現在のコミットの前に N 番目のコミットをチェックアウトします。

履歴にマージコミットがある場合は、興味があるかもしれません

git checkout HEAD^N

これにより、マージ コミットの N 番目の親がチェックアウトされます (ほとんどのマージ コミットには 2 つの親があります)。

したがって、マージ コミットの最初の親に続いて、常に 1 つのコミットに戻るには、次のようにします。

git checkout HEAD^1

あなたも興味があるかもしれませんgit bisect- 二分探索でバグを導入した変更を見つけてください。

于 2013-05-24T16:25:22.520 に答える
10

コミットの数がエラーを引き起こすコミットの数よりもはるかに多い場合、各コミットを反復してテストを実行することは非常に非効率的です。エラーを引き起こしたコミットを見つけるために、履歴内のすべてのコミットに対してテストを実行する必要はありません! git bisect特にを実際に見る必要がありますgit bisect run

この質問は、最近導入されたものだけでなく、履歴のある時点以降にエラーを導入したすべてのコミットを見つけたいことを示しています。git bisect;の 1 回の呼び出しでそれを行うことはできないと思います。小さなスクリプトでループに入れる必要があります。

于 2013-05-25T06:08:36.017 に答える