为了追踪我在哪个版本中破坏了我的软件中的功能,我需要查看我的存储库的旧版本。我只想将工作目录设置为较旧的提交,使用代码,然后丢弃更改,然后尝试另一次提交。
我不想改变任何有关提交的内容,也不想删除或创建提交。我尝试使用git reset
,但之后不再显示新的提交。所以我再次下载了存储库,因为我不知道如何还原它。
答案 0 :(得分:15)
一个简单的git checkout old-sha1
可以是一个开始,但这种任务的真正命令是:
<强> git bisect
强>
通过二进制搜索查找引入错误的更改
如果您有一个脚本能够测试您的工作树是否“正常”,您可以通过git bisect
在之前的提交中执行该脚本,找到破坏您测试的第一个提交。
请注意,GitHub for Windows尚不支持此命令:您必须打开shell。
git checkout
会让你进入一个独立的HEAD,这没关系,因为你不会做任何修改。
要回到原来的位置,请查看分支机构:
git checkout master
答案 1 :(得分:7)
您可以使用以下方法将另一个分支中的代码签出到索引:
git checkout my-other-branch .
点是路径说明符,表示您要对整个存储库执行此操作。您同样可以仅指定特定文件夹。从技术上讲,您可以为my-other-branch
参数指定任何“tree-ish”说明符,例如标记,提交哈希,类似HEAD~1
等等...如果您希望这些更改不被取消,你可以这样做:
git reset HEAD
假设您开始处于干净状态,您现在可以使您的工作目录处于与my-other-branch
相同的状态。
答案 2 :(得分:2)
使用git checkout <branch_name>
,您可以切换到其他可用分支。如果要将HEAD
重置为旧提交,可以尝试以下命令:
此外,如果您有提交,那么您可以尝试以下命令:git reset --hard <commit>
通过这种方式,您可以将工作目录设置为较早的提交。
要完全放弃您可以尝试的更改:git reset --hard
,它会将您的目录清理为上一次提交。