GIT 在特定提交之前获取提交哈希

Posted

技术标签:

【中文标题】GIT 在特定提交之前获取提交哈希【英文标题】:GIT get the commit hash prior to a specific commit 【发布时间】:2014-10-29 03:14:15 【问题描述】:

git 1.7.1

git show <hash>:<file> 根据提供的提交哈希给我文件

我正在试图弄清楚如何在我拥有的哈希之前打赌上一次提交的文件。

我知道我总是可以使用log 来获取所有哈希值并找出我需要的哈希值,但在我的情况下这不是一个好的解决方案,因为我试图尽量减少我需要为性能问题执行的命令数量.

想知道有没有简单的方法。

【问题讨论】:

您是要向后浏览历史,从提交到(其中一个)父级,还是向前,从提交到(其中一个)孩子?前者是微不足道的(使用^~ 符号),后者是困难的(见***.com/questions/2263674/…)。 我想倒退。 git show --format="%P" <SHA> 显示给定SHA 的所有父母。在git 1.8.5.2 上对其进行了测试。从中得到答案:***.com/a/7211140/630866 您的标题没有指定这是特定文件的提交。我需要一般的最后一次提交,并且只需要哈希。 我不关注。你能改写一下吗? 【参考方案1】:

使用git show HEAD^1。你可以用你的提交哈希替换HEAD

编辑以考虑多个父母:

如果您想查看提交哈希的所有父母,您可以使用git rev-list --parents -n 1 <commithash> 或使用git show,正如@Bhaskar 在问题的cmets 中所建议的那样。

还有其他方法以及解释here。

【讨论】:

如果HEAD 有多个父级,此命令将只显示第一个父级。 @Jubobs 如果 HEAD 有多个父母,那么 OP 试图做的事情本质上是模棱两可的,在这种情况下可能没有一个好的答案。使用git show <sha>^1:<file> 将显示文件存在于第一个父级中,并且大部分时间都需要... @twalberg 是的。我的评论只是评论,而不是批评。【参考方案2】:

取决于提交信息: git log | grep -A <number_of_lines> <commit_hash> <number_of_lines>

【讨论】:

以上是关于GIT 在特定提交之前获取提交哈希的主要内容,如果未能解决你的问题,请参考以下文章

获取 Node 中最近一次 git 提交的哈希值

在 Git 中,如何将当前提交哈希写入同一提交中的文件

如何在git中获取合并请求的所有提交?

Git Tag 列表,显示提交 sha1 哈希

获取合并提交的git diff输出结果

git,检出到主控上的特定提交