恢复到Git Shell中的早期提交

时间:2017-04-02 15:25:12

标签: git powershell github

假设我在github上的一个项目中有20个提交。在20次提交后,我觉得我的程序运行缓慢。我希望在程序放慢时回去测试。我只是无法弄清楚我需要使用什么命令来将本地驱动器与来自github的特定提交ID同步。请帮忙,我知道这可能很简单。如何

我已经尝试过git checkout,但这会创建一个新的分支或其他东西

git checkout <SHA HASH>

1 个答案:

答案 0 :(得分:0)

实际上,您可以像尝试一样使用git checkout。只要您不使用-b选项,这不会创建新分支,但会为您留下一个分离的HEAD(即HEAD指向特定提交,而不是一个分支),正是你想要的。

如果您不想测试一个接一个的提交以找到它减慢的点,那么您可能希望使用git bisect,它完全支持您有效地查找某个更改的特定提交的用例。这可能是引入错误的提交,或者某些事情变得缓慢或者其他什么的提交。它通过二进制搜索算法支持这一点,这意味着你给项目速度慢的提交和项目速度快的提交,然后Git检查它们之间的中间位置。然后你告诉Git这个提交是慢还是快等等,直到Git告诉你它根据你的输入找到了项目变慢的第一个提交。与测试一个接一个的提交相比,你通常需要更少的尝试来查找有问题的提交。

如果您知道它在当前提交时速度很慢并且在20次提交之前快速,那么您的命令将类似于git bisect start --term-old=fast --term-new=slow @ @~20。然后在测试签出的代码后,您将调用git bisect slowgit bisect fast,直到找到有问题的提交。如果您可以通过编程确定代码是慢速还是快速,您甚至可以给git bisect一个脚本,告诉bisect返回值是否提交缓慢,快速或不确定(例如构建失败,因此无法进行缓慢或快速)测量)和Git将自动找到您提出的提交,而无需人工干预。