reverse back to certain commit and test what the issue?
现在有没有一种方法可以保留我的所有更改,并且仍然将我的应用程序还原为某个提交,并开始执行所有其他提交,以查看哪个提交导致了我的应用程序中的问题?
我做了很多更改,检查所有内容需要很长时间,所以我希望获得以前的提交,当我发现问题时,我将返回到最近的提交,然后只应用必要的更改。
这里有一个答案:Git返回到特定的提交状态,但是我仍然想保留我最近的所有更改,有人能带我完成思考过程吗?
我在想,如果我现在提交我最近的更改,它在bitback中,然后使用方法:git reset --hard {commit numbers}并继续查看我的提交列表,当我发现问题时,git reset --hard {most recent commit}这会使我回到最新的状态吗?
有一个命令用于您想要执行的操作,它被称为git bisect,它使用二进制搜索来查找尚未工作的提交。过程是
git bisect start
git bisect bad
git bisect
号
这里有一个相当容易阅读的指南。
这将允许您查找导致该问题的提交。
- 这看起来真不错!我会尝试一下,并报告任何问题!
- 我试了一下,在执行我对git bisect bad的承诺时,出现了一个错误,error: Your local changes to the following files would be overwritten by checkout:我现在该怎么办?
- 然后我输入了git bisect reset,它给了我一个修改过的页面,说Previous HEAD position was b2f1d32,但这不是最近的提交?我做错什么了吗?
- 如果您在开始之前有未保存的更改,那么在某个时刻它们可能会被覆盖。为了避免这种情况,您可以中止平分并进行平分重置。然后你可以用git存储你的本地更改。一旦你完成了,你想继续工作,你应该做git stash pop来恢复你的工作。
- @Hellomello,查看上面的评论。
提交所有未提交的更改,清除未跟踪文件的树,然后就可以
1
| git checkout <some_commit_sha> |
到那个特定的提交,然后git checkout master或其他分支返回。
如果必须的话,在处于"分离"状态时,不要提交任何内容—您可以在那里启动一个分支,然后像往常一样继续进行。
- 当您的意思是分离状态时,这是在签出另一个提交时吗?
- 是的,当您签出commit时,它不在任何分支的头上。签出时Git将发出警告。关键是,如果您提交到分离的树,而不创建分支,那么这些新提交将丢失