我知道编辑这个网站吗?

使用 Git 精确定位回归

如何使用 Git 平分

如何找到哪个提交引入了回归

IE。你知道昨天的ImageJ Ops库版本运行得很好,但今天却崩溃了?

Git-bisect 来救援!

git bisect start
git bisect bad HEAD
git bisect good HEAD@{yesterday}

这将开始二分过程,即尝试找到一个在坏作业和好作业之间“中间”的修订(您将在这个过程中将越来越多的作业标记为好或坏,并且通过推断,好作业的祖先将被认为是好的,坏作业的后代也会被认为是坏的),并让您测试它。

在我们的例子中,我们只运行单元测试:

mvn clean test

如果测试尚未确定(例如:它无法编译,因此您不知道有问题的单元是否测试通过),则其标记为

git bisect skip

否则,将其标记为“坏”或“好”。

迟早(通常是更早),Git 会告诉你哪个工作是罪魁祸首。你可以查看相应的片段

git show <commit name>

其中提交名称是 Git 告诉您的第一个错误提交的 40 位十六进制字符串。通常您会立即结束二分过程:

git bisect reset

这意味着您回到开始之前所在的修订版本和分支。

如何转发端口修复

如果补丁有明显的缺陷,就尝试修复它。您必须首先移动到第一个错误的修订版:

git checkout <commit name>

(这会警告您,您不在任何分支上,但是没关系。)然后只需应用您想要的修复,然后提交(当然,在确保其有效之后;-)。现在,用临时标签标记它:

git tag my-fix

返回您来自的分支:

git checkout main

如果您不确定自己来自哪个路径,请先查看reflog

现在您可以选择(或转发)您的补丁:

git cherry-pick my-fix

如果存在冲突,请解决它们并提交(“git commit fiji.cxx”)。

之后,您可以删除现在已过时的标签:

git tag -d my-fix

注意:您可以使用 HEAD 引用的 reflog (git cherry-pick HEAD@{1}) 替换临时标签,但如果您不熟悉这个概念,标签可能更容易处理。

#另请参阅