【问题标题】:GitHub: How to show commits for all files in folderGitHub:如何显示文件夹中所有文件的提交
【发布时间】:2019-03-16 14:03:38
【问题描述】:

不难找到有关如何查看特定提交中的所有文件的信息,但我希望反过来。 IOW,我想要一个文件夹中所有文件的列表以及将它们放在那里的提交。比如:

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

有没有办法做到这一点?

【问题讨论】:

  • 将它们放在那里的提交,您的意思是第一次提交引用该特定文件夹中的特定文件?还是修改所述文件的最后一次提交?

标签: git github git-commit


【解决方案1】:

假设您有兴趣了解文件的最新提交,此命令将为给定文件提供:git log -n 1 -- <your_filename>。 要产生你想要的输出,你可以使用这个 sn-p:

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(参见link

如果您重复执行此操作,您可以将 sn-p 放入 shell 脚本并添加到您的 $PATH。

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

【讨论】:

  • 不错!我假设 sn-p 用于 bash shell?这是 PowerShell 中类似的内容(没有日志文件):Get-ChildItem | ForEach-Object {@{($_.name)=(git log -n 1 --pretty=format:%H -- $_)}}
  • 是的,那是 bash 的(我用 git bash 在 windows 上测试过)
猜你喜欢
  • 2012-02-24
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 2021-04-29
  • 2016-06-04
  • 2014-12-26
  • 1970-01-01
相关资源
最近更新 更多