我必须回到旧版本,其中最新版本不起作用。到目前为止,我尝试了以下但令人困惑,因为我看到所有代码仍然是最新的:
git bisect start
git bisect bad
git biesct good <VERSION OR PACKAGENAME.VERSION.OF.OLD.NUMBER.WHICH.I.THINK.WAS.GOOD>
# NOW CONFUSING.. WHAT I HAVE TO TELL TO JUST USE THAT OLD VERSION? ONLY THE CHECKOUT COMMIT ID?
git checkout <old version commit id>?
你究竟是怎么做到的?
跟进:
广告客户$嘿,我们在主0错误中获得了最新版本。 (他 谎称有100多个错误,他只需要我们测试)
第1步:好奇的@ tester
tester$ cd /var/tmp
tester$ git clone git://site.com/pizzapasta.git
tester$ ./autogen.sh; make;make install; run;
tester$ # failed 40 bugs found, impossible to use it
第2步:回到原来的
tester$ cd /var/tmp/pizzapasta
tester$ git bisect start # initialize
tester$ git bisect bad # i marked my master/latest is BAD, i dont like/trust it
# Now i am going to old version
tester$ git bisect good <COMMIT-U-THINK_GOOD>
tester$ git checkout <COMMIT-ID-THAT-WAS-SHOWN-BY-GOOD>
tester$ ./autogen.sh; make; make install; run;
运行.....所以旧的是黄金,它的工作原理
答案 0 :(得分:1)
首先,确保git status
的输出为空 - 如果您的工作未提交,则可以解释为什么您再次看到相同的代码。
要完成你引用的命令,前两个很好:
git bisect start
git bisect good
...只是说开始二分,而且当前版本不好。然后,一旦你这样做:
git bisect bad <COMMIT-YOU-THINK-IS-GOOD>`
... git会自动将你移动到一个提交,这个提交大约是你标记为好与坏的提交的一半。 (当你处于历史的这个新点时,代码的很大一部分可能确实是相同的。)
(请注意,此时执行git bisect bad <COMMIT-YOU-THINK-IS-GOOD>
相当于执行git checkout <COMMIT-YOU-THINK-IS-GOOD>
和git bisect bad
。)
此时您只需要测试代码。如果问题仍然存在,请执行:
git bisect bad
...或者如果选择的版本git似乎很好,只需执行:
git bisect good
在其中任何一种情况下,当您输入这些命令时,git会再次自动将您转移到新版本进行测试。 (如果它将您转移到无法编译的版本或类似的版本,您可以通过执行git bisect skip
告诉git选择另一个版本而不将当前版本标记为好或坏。)
基本上,你一直在测试git移动你的新版本,直到它输出一条消息f414f31 is the first bad commit
(或类似的东西)。
最后,为了结束二分并将你自己带回到你开始之前的分支/提交,只需这样做:
git bisect reset
(如果出现任何问题,您也可以使用它来中止上述任何一点的二分法,或者您感到困惑。)