如何将工作目录设置为较旧的提交?

dan*_*jar 18 git working-directory

为了追踪我在哪个版本中破坏了我的软件中的一个功能,我需要查看我的存储库的旧版本.我只想将工作目录设置为较旧的提交,使用代码,然后丢弃更改,然后尝试另一次提交.

我不想改变提交的任何内容,既不删除也不创建提交.我试过使用git reset但是之后再没有显示更新的提交.所以我再次下载了存储库,因为我不知道如何还原它.

Von*_*onC 15

简单git checkout old-sha1可以是一个开始,但这种任务的真正命令是:

git bisect.

通过二进制搜索查找引入错误的更改

如果你有一个脚本能够测试你的工作树是否"工作",你可以在之前的提交中执行该脚本git bisect,找到第一个破坏你的测试的提交.

请注意,GitHub for Windows尚不支持此命令:您必须打开shell.


A git checkout会让你处于一个独立的HEAD,这没关系,因为你不会做任何修改.
要回到原来,请查看分支机构:

git checkout master
Run Code Online (Sandbox Code Playgroud)

请参阅" 为什么git脱掉我的头? ".


mha*_*and 7

您可以使用以下命令将另一个分支中的代码签出到索引:

git checkout my-other-branch .
Run Code Online (Sandbox Code Playgroud)

点是一个路径说明符,表示您要为整个存储库执行此操作.您同样可以仅指定特定文件夹.从技术上讲,您可以为my-other-branch参数指定任何"tree-ish"说明符,例如标记,提交哈希HEAD~1等等,如果您希望将这些更改取消暂存,则可以执行以下操作:

git reset HEAD
Run Code Online (Sandbox Code Playgroud)

假设您开始处于干净状态,您现在可以使您的工作目录处于相同的状态my-other-branch.