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

git 1.7.1

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

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

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

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

【问题讨论】:

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

标签: git shell centos


【解决方案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>

【讨论】:

    猜你喜欢
    • 2012-12-31
    • 2018-06-21
    • 1970-01-01
    • 2021-02-02
    • 2017-09-09
    • 2021-06-13
    • 2018-09-22
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多