我注意到 git merge 在进行合并时似乎没有进行稳定的排序。或者它可能是完全不同的东西。我真的不知道出了什么问题。
如果你尝试这个小测试用例 10-20 次,直到它显示“FLAKY”:
mkdir a; cd a; output=$(git init .; touch 0; git add 0 ; git commit -m0; git checkout -b b1; touch 1; git add 1; git commit -m1; git branch b2 master; git checkout b2; touch 2; git add 2; git commit -m2; git checkout master; git merge b1; git merge b2 -m"merge";) test=$(git log --format=%s|xargs echo); if [[ "merge 2 1 0" == "$test" ]]; then echo "FLAKY " $test; else cd ..; rm -rf a; fi; 2> /dev/null
(它是一个单行器,你可以在 bash 提示符下运行它)
通常,您最后回显的日志将如下所示:
merge 1 2 0
但过了一会儿,你可能会得到 1 和 2 交换位置:
merge 2 1 0
这令人难以置信的愤怒。我总是可以让这两个第一次提交在测试中可以互换,但我宁愿不这样做。我宁愿去除片状。有谁知道是什么原因造成的?