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 在特定提交之前获取提交哈希的主要内容,如果未能解决你的问题,请参考以下文章