簡體   English   中英

返回Git中的N次提交以查找導致測試回歸的提交

[英]Go back N commits in Git to find commit that causes test regressions

是否有一條命令可以讓我根據其與當前提交的距離而不是使用提交ID來檢出提交?

用例

基本上,我正在考慮設置cron作業類型腳本以在構建服務器上執行以下操作:

  • 下拉最新的特定git分支(git pull dev)。
  • 生成它,運行測試。
  • 如果通過百分比低於上一次存儲的百分比:
    • 遞歸地返回一次提交,構建,運行測試,直到找到百分比更改的提交為止。
    • 記錄引入回歸的提交。

我對如何將它們鉸接在一起有一個粗略的想法,但是除非我可以定期回退一次提交,否則它將無法工作。

如果沒有特定的命令,我想我可以對提交日志進行grep並每次獲取第一個?

我感謝任何想法或幫助!

不同於: 如何撤消Git中的最后一次提交?

我想返回“ N”次提交。

git checkout HEAD~N

將在您當前的提交之前簽出第N個提交。

如果您的歷史記錄中有合並提交,那么您可能會感興趣

git checkout HEAD^N

這將檢出合並提交的第N個父級(大多數合並提交有2個父級)。

因此,要始終在所有合並提交的第一個父級之后返回一個提交:

git checkout HEAD^1

您可能也對git bisect感興趣-通過二進制搜索查找引入錯誤的更改。

如果提交的次數比引入錯誤的提交的次數大得多,則遍歷每個提交並運行測試的效率可能非常低。 無需針對歷史記錄中的每個提交運行測試,只需查找導致錯誤的提交即可! 您確實應該查看git bisect ,尤其是git bisect run

該問題表明,您要查找自歷史記錄以來引入錯誤的每個提交,而不僅僅是最近引入的。 我認為您不能通過調用git bisect來做到這一點; 您必須將其放在一個小腳本中循環播放。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM