确定上次提交特定文件的版本 (SHA)

Identify the version (SHA) of the last time a specific file was committed

我有一个大项目,其中包含多个脚本和文件,全部由 GIT 维护。在所有这些文件中,有一个文档我想在其上打印与该文件关联的提交版本 (SHA)。我的 Google 搜索结果是:

git rev-parse --short HEAD

这给了我项目的 HEAD。但是,如果我的文档未包含在我上次提交的更改中,则此版本不是我想要的版本。 This other Whosebug answer 建议:

git log \-- c.rmd

但控制台中此命令没有任何输出。

那么,有没有办法输出与特定 file/script 关联的最新提交 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 包的。

要查找文件 path/to/myfile.txt 已被修改的最后一次提交的 SHA,请转到

git rev-list --all -1 -- path/to/myfile.txt

对于短 SHA :

git log --all -1 --pretty=format:"%h" -- path/to/myfile.txt