问题标签 [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.

0 投票
2 回答
134 浏览

git - 带有 *uninteresting* 路径列表的 git bisect

您可以将路径列表传递给,git bisect以便仅测试更改这些文件的提交:

如果您知道要跟踪的问题涉及树的哪一部分,则可以通过在发出 bisect start 命令时指定路径参数来进一步减少试验次数:

但是,我想做双重的:忽略只触及某些文件的提交,所以像

会跳过一个涉及到的提交,arch/i386/foo.cinclude/asm-i386/utils.s会包含一个涉及到arch/i386/bar.c和的提交arch/amd64/baz.c(因为后者不在列出的路径下,因此整个提交是相关的)。

有没有办法做到这一点?

0 投票
1 回答
188 浏览

git - 如何 git-bisect 仅来自单个作者的提交?

我要解决的问题是:我知道在版本 X 和版本 Y 之间,人 P 提交了一个破坏了某些东西的更改。我知道我可以在 X 和 Y 之间进行 git-bisect 并找到更改,但是过滤二进制搜索以仅选择作者 P 的提交会更快、更有效。我看到 git-bisect 可以过滤到某些路径上的提交,但我看不到按作者过滤的方法。

0 投票
0 回答
465 浏览

git - “git bisect log”是否保留所有状态信息?

动机

我正在做一个二等分并考虑保存它的状态,然后可能会继续它。目前尚不清楚是否git bisect log可以做到这一点。

发帖前先搜索

man git bisect说:

平分日志和平分重播

在将修订标记为好或坏后,发出以下命令以显示到目前为止所做的工作:

如果您发现在指定修订状态时出错,可以将此命令的输出保存到文件中,对其进行编辑以删除不正确的条目,然后发出以下命令以返回更正状态:

与使用 git bisect进行战斗回归相比,这似乎更多地表明答案是肯定的。

保存日志并重播

如果您想向其他人展示您的二分过程,您可以使用以下示例获取日志:

并且可以使用以下方法重播它:

实验

我刚刚做了一个实验来用 git 1.9.0 检查这个。

git bisect 日志 | diff - bisectlog

结论

所以,这样重播后,git bisect log输了一条线。

我想说git bisect log包含大部分信息,但并不总是全部。

注意:用于本实验的二等分意味着对其他提交的几次手动重置,这可能会解释一些事情。

有没有人问过自己同样的问题?

是否应该关心丢失的线路?

0 投票
2 回答
1049 浏览

git - --no-ff merge 如何打破平分和责备?

了解 Git 工作流文章说,

所以你添加了一条新规则:“当你在你的特性分支中合并时,使用 –no-ff 来强制一个新的提交。” 这样就完成了工作,然后您继续前进。

然后有一天你在生产中发现了一个严重的错误,你需要追踪它是什么时候引入的。您运行 bisect 但继续登陆检查点提交。你放弃并亲自调查。

您将错误缩小到单个文件。你跑去责备看看它在过去 48 小时内是如何变化的。您知道这是不可能的,但责备报告该文件已数周未动过。事实证明,责备报告在初始提交时发生了变化,而不是在合并时。你的第一次检查点提交几周前修改了这个文件,但今天合并了。

no-ff 创可贴、折断的二分法和怪罪之谜都是您将螺丝刀用作锤子的症状。

git merge--no-ff是您明确阻止快进合并的一种情况。但是,如果一个提交不是另一个提交的直接祖先,那么快进甚至不会发生。这是开发中罕见的情况。换句话说,大多数合并都是非快进类型。那么传递如何--no-ff破坏bisectand的功能blame呢?

0 投票
2 回答
84 浏览

java - 在 git bisect 期间,只运行失败的测试是否安全?或者我们应该运行所有测试?

当我使用 git bisect 命令时,我只在 Java 程序的每个对分点运行失败的测试。但是,我看到许多与 git bisect 相关的教程都建议运行“make; make test”。有什么理由我应该在每一步运行所有测试吗?提前非常感谢。

0 投票
3 回答
13307 浏览

git - 是否可以将 git 提交标记为进行中?

我知道对于主分支上的所有提交是否应该使项目处于有效的工作状态,存在各种意见和理念。我不是在征求这些意见。

为了争论,让我们假设在master分支历史的某个地方,我确定了一个实际上是正在进行的提交的提交,即它没有构建或者它破坏了其他东西。由于我们讨论的是 master 分支中的历史记录,因此变基或修改(或任何实际更改提交的内容)不是一种选择。

为了警告其他开发人员并使自动 git bisect 脚本更容易跳过此提交,我想以某种方式将此提交标记为进行中。我该怎么做呢?

我曾考虑过使用git tag,但是由于标签必须是唯一的,因此您最终会使用像这样的标签wip/<some_unique_id>,在我看来这是一个丑陋的黑客。此外,从概念上讲,我们不想将此提交视为标记提交,即我们可能永远不想检查它,我们可能不希望它出现在标记提交点列表等中。

0 投票
2 回答
114 浏览

git - git:更简单的 bisect:工具应该自己找到好哈希

我很懒,想用 git bisect 找到一个提交,它引入了尽可能少的工作失败。

我认为自己没有理由提供良好的哈希值。

我认为这些输入应该足够了:

  • 一个脚本,成功返回 0,失败返回其他
  • git 在一个分支上(不是分离的头)。并且测试失败

工具 bisect(或包装器)可以跳回 git 历史以找到一个好的散列本身。

问题:如何完成这项工作?

0 投票
2 回答
3718 浏览

git - git bisect skip 如何选择下一个提交尝试?

使用 时git bisect,可以运行git bisect skip以将当前提交标记为不可构建/不可测试的提交,以尝试让 Git 选择其他提交进行测试。

Git 如何决定在 a 之后尝试哪个提交git bisect skip?实验表明它不仅仅是一个相邻的提交,但我无法计算出这种模式。

编辑:我知道基本git bisect是二进制搜索,但我很好奇git bisect skip,这显然是在做一些更复杂的事情。

实验表明它不仅仅是选择一个相邻的提交;下面创建了 100 个编号为 0-99 的提交,然后开始将它们一分为二。第一个提交git bisect选择位于中间,但之后的每个提交git bisect skip似乎或多或少是随机选择的。

0 投票
1 回答
269 浏览

git - Git:相当于`git bisect`和`git blame`的`--full-history`

我已经大量使用 Git 大约 7 年了。几天前,我发现了一个令我惊讶的行为。我发现git loggit blamegit bisect表现出这种奇怪的行为。一位朋友让我知道了解决我问题的--full-history标志。git log我想知道,对于我自己的教育,是否有git blamegit bisect.

随意使用此 repo 亲自查看问题:https ://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z

这是它的日志:

在第一次提交中,该文件coffee被添加。在 commit3068c7d中,我在文件中添加了一行“sugar” coffee。但后来我把这个分支合并到development分支中,在那个合并中,出现了一个错误,“糖”行被删除,coffee留空。然后添加了另一个提交b7a8d7a,进行了不相关的更改,以进行良好的衡量。

现在我看着我的咖啡,发现里面没有糖。我清楚地记得在我的咖啡里加了糖。我运行git log coffee,并得到这个输出:

而已。git log既没有显示我添加糖的原始提交,也没有显示删除它的合并。缺少两个非常相关的提交。

这个问题让我沮丧了大约一个小时,因为它发生在一个巨大的企业仓库中,在那里手动查找提交要困难得多。

我还尝试使用git bisectandgit blame来确定这两个提交,但是这两个工具都忽略了这两个提交。git bisect在我完成所有git bisect badandgit bisect good操作后指出我错误的提交。

然后,正如我一开始所说,一位朋友指给我看--full-history国旗:

这让我很高兴,因为它显示了两个相关的提交,一个添加糖和删除它的合并。所以我的问题解决了。但我真的希望我也能知道如何制作git bisectgit blame表现。有没有人碰巧知道?

0 投票
2 回答
727 浏览

jenkins - Git 与 jenkins 平分

Jenkins 2.X 变得非常好——想知道现在是否有可能用它做一个 git bisect。目前,根据詹金斯当时看到的时间,提交被捆绑到作业中——当作业通过时,这是可以的。但是当工作失败时,如果 jenkins 能够以 bisect 方式返回以找到中断提交,那将是一件好事。理想情况下,Jenkinsfile 保持不变。