GitHub:如何显示文件夹中所有文件的提交记录

3

很容易找到有关如何查看特定提交中所有文件的信息,但我想要相反的情况。也就是说,我想要一个包含某个文件夹中所有文件以及放置它们的提交的列表。类似于下面这样:

File1.txt   c7b1fd463f40b39d7f199ee650b58a8ba153b64a
File2.md    d9e3ca571d40b38d7fab90cf50b48a82c1d3a32f
File3.c     3207cab3b49da7be5d9a7ef8594bef1935e15fd1
...

有什么办法可以做到这一点吗?

1
把它们放在那儿的提交,你是指引用该特定文件所在特定文件夹的第一次提交吗?还是修改了该文件的最后一次提交? - Lasse V. Karlsen
1个回答

2

如果你想知道你的文件最近一次提交是什么,可以使用以下命令:git log -n 1 -- <your_filename>。 为了输出你所需的结果,你可以使用以下代码片段:

for file in *; do 
  log=$(git log -n 1 --pretty=format:%H -- $file)
  echo -e "$file\t$log"
done

这段代码简单地循环遍历当前文件夹中的文件并执行git命令,仅提取SHA。

如果你想获取放置该文件的第一个提交而不是最后一次触及该文件的提交,请将git命令替换为git log --diff-filter=A --pretty=format:%H(请参见链接)。

如果您需要重复执行此操作,可以将代码片段放入shell脚本中并添加到$PATH中。

警告:如果文件数量过多,运行可能需要一些时间。如果可能,您可以更改文件模式以进行限制。


不错!我猜那段代码是用于Bash Shell的?这里有一个类似的PowerShell示例(没有日志文件):Get-ChildItem | ForEach-Object {@{($_.name)=(git log -n 1 --pretty=format:%H -- $_)}} - Teknowledgist
是的,那是针对Bash的(我在Windows上使用Git Bash进行测试)。 - Bajal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接