git对分责怪无关提交

git对分责怪无关提交,git,git-bisect,Git,Git Bisect,我在工作中遇到过这样一种情况:我们有一个git回购协议,大约有80个活跃用户在使用它。 在修改文件的功能分支上有一个提交#1。分支合并为主分支。 稍后,我发现在master上缺少由commit#1引入的更改。 所以我运行了git-bisectpointing-commit#1作为好的,而当前master作为坏的 经过一些步骤后,git bisect发现,造成损失的责任在于提交几个月前涉及完全不同代码区域的另一个特性分支 我一次又一次地经营这个教派。我也要求我的同事去做。每次都是同一件事 我们无法

我在工作中遇到过这样一种情况:我们有一个git回购协议,大约有80个活跃用户在使用它。 在修改文件的功能分支上有一个提交#1。分支合并为主分支。 稍后,我发现在master上缺少由commit#1引入的更改。 所以我运行了
git-bisect
pointing-commit#1作为好的,而当前master作为坏的

经过一些步骤后,git bisect发现,造成损失的责任在于提交几个月前涉及完全不同代码区域的另一个特性分支

我一次又一次地经营这个教派。我也要求我的同事去做。每次都是同一件事

我们无法解释这种行为。手动调查历史记录和文件更改非常困难,因为历史记录非常复杂,分支之间有许多合并

最近,我的同事在另一个代码区域的另一段代码缺失方面遇到了类似的问题。再一次一分为二


我完全不知道发生了什么。

Git bisect是为寻找一个单步变化而设计的,而不是一个瞬时变化

在许多简单的情况下,可以设置起始-结束范围,以便将瞬时更改转换为阶跃更改,但在复杂的合并模式中,纯起始-结束不起作用

git bisect
给定一个范围时,它还确定一组合适的基本提交,以便创建一个可平分的搜索。(IIUC)这些可以早于给定的起点,并且在另一个分支上。可以添加附加(IIRC)“好”点,以确保好-坏切割向右侧倾斜


为什么不也尝试一下
git dull

您提到在您试图平分的历史记录中可能有一个或多个合并提交。你确定你遵循的是正确的父项吗?@TimBiegeleisen我检查的是确保commit#1是当前主项的间接父项。这就是你的意思吗?也许不是。Git bisect可以追溯到历史,并找到了事情停止破裂的时刻。但如果存在合并提交,那么必须有一个步骤告诉Git遵循哪个父级。我的意思是,可能Git在穿越合并提交时跟随了错误的父级。@TimBiegeleisen这很可能。有许多合并。它可能会选择错误的道路。但我想不起来对分曾问过我该走哪条路。即使自动运行,对分也会留下很多步骤,你可以从中找出你认为出错的步骤。是在手册中进行额外良好修订的位置,并告诉git要查看哪个文件。