如何在 git 中获取比当前提交更新的哈希



in git我使用 gitk 来查看几周前提交的哈希值,并使用带有该哈希值的 git checkout 将我的源文件恢复到以前的状态。

现在我想去几天后的提交,但是gitk只显示当前提交,而不是以后的提交。

使用git log也仅在当前之前显示。

如何列出以后的提交?

您要签出的提交是否在任何分支的祖先中? 换句话说,您当前的任何分支是否包含您正在搜索的提交中所做的更改?

如果是这样,git log --all将在日志中显示此提交。 如果您只查找提交消息,则添加 --oneline 和/或 --decorate 标志可能会使此输出更易于搜索:

$ git log --all --oneline --decorate

如果您的提交在任何分支的祖先中(因此未显示log --all),那么您必须搜索git reflog。 reflog 本质上是您的HEAD指向的所有提交的历史记录。 当您当前在工作目录中签出这些文件时,HEAD指向提交。

引用日志的格式为

hash HEAD@{n}: command: message

其中command是发出用于将HEAD指向此特定位置的命令,message是与此命令关联的消息。 对于commitmessage是您输入的提交消息。

由于这种结构良好的格式,我们可以使用 grep 使输出更易于阅读。例如,如果您知道最近签出了有问题的提交,则可以运行:

$ git reflog | grep checkout

或者,要仅查看提交,您可以运行:

$ git reflog | grep commit

您还可以以许多其他方式使用 grep,具体取决于您要搜索的内容:

$ git reflog | grep "phrase in commit message" --ignore-case
$ git reflog | grep "individual|words|in|message" --ignore-case
您可以使用

git reflog来查看 HEAD 指针访问过的所有提交的哈希值,即您在工作目录中曾经指向的所有提交。

如果您无法使用git log找到您要查找的提交,这意味着您正在寻找的提交不是您当前放置的提交的祖先。如果在 reflog 中找不到您的提交,您可能会找到(直接或间接)基于它的提交。如果找到它,请检查它,您查找的提交现在应该列在 git log 中。

您可以使用

git log --all --oneline --graph --decorate

可视化您的 Git 树。您现在处于分离状态;回到你以前的地方;您需要使用:

git checkout <branch-name>

其中<branch-name>是您正在处理的分支。

相关内容

  • 没有找到相关文章

最新更新