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