【发布时间】:2020-02-03 14:58:56
【问题描述】:
我有一个包含多个脚本和文件的大型项目,所有这些都由 GIT 维护。在所有这些文件中,有一个文档我想在其上打印与该文件关联的提交版本 (SHA)。我的谷歌搜索给了我:
git rev-parse --short HEAD
这给了我项目的负责人。但是,如果我的文档未包含在我上次提交的更改中,则此版本不是我想要的版本。 This other stackoverflow answer 提议:
git log \-- c.rmd
但在控制台中此命令没有任何输出。
那么,有没有办法输出与特定文件/脚本关联的最新提交 SHA?为了使它更直观,我想要一个命令,当调用文件c.rmd 时,它会从特定树中输出a3。
|
L__commit 4 - files a.r, b.r - SHA a4
|
L__commit 3 - files c.rmd - SHA a3
|
L__commit 2 - files a.r - SHA a2
|
L__commit 1 - files a.r, b.r, c.rmd - SHA a1
最后,我希望在 R 的 RMarkdown 文档中自动打印该版本号。因此解决方案可以是纯 git 或来自特定的 R 包。
【问题讨论】:
-
请注意,如果文件是通过克隆存储库创建的,则该文件实际上是 in 您在那里选择的提交。 Romain Valeri 正确地确定了您想要的不是这个提交,而是一些较旧的提交。也就是说,您希望 Git 做它通常的事情:从 last 提交开始并向后工作,一次提交一个。在每一点,它都应该比较给定的文件和previous提交中的副本。如果两者不匹配,您需要提交的哈希 ID,其中父副本不同。
标签: git git-log git-rev-parse