命令行 - 如何显示git历史记录的前10个

分享于 

4分钟阅读

ubuntu

  繁體

问题:

我找到了这个命令,从git历史中获取前10个最大文件https://github.com/18F/C2/issues/439)


git verify-pack -v .git/objects/pack/pack-7b03cc896f31b2441f3a791ef760bd28495697e6.idx 


| sort -k 3 -n 


| tail -10



它现在显示如下内容:


32f0dac6ee67325ca12b9c03279ee2dbc7790567 blob 12732444 11425432 1091676437


c63c2851049c51eabbcd54cb46cad367d4e0d593 blob 14368670 12189261 246241495



这些数字代表什么?文件大小是多少?


答案1:

为了减少文件使用的空间,git packs对象存储在存储库中到一个.pack文件中,这个包文件包含实际的git对象,.idx包含用于快速定位包文件中对象的索引。


$ git verify-pack -v .git/objects/pack/pack-7b03cc896f31b2441f3a791ef760bd28495697e6.idx 



上面的命令读取给定的.idx文件,并用相应的包文件进行验证,使用-v可以得到详细的输出。

输出中的第三列是对象的大小,使用 sort -k 3 -n 我们将使用第3列(基于大小)对输出进行数字排序,并使用tail -10裁剪出最大的10个。

要从它哈希值中获取文件的名称:


$ git ls-tree -r HEAD | grep HASH



要获取所有名称的列表:


$ git verify-pack -v .git/objects/pack/pack-1daab5282d01ab18db98e21a985eb2d288f7faa0.idx | sort -k 3 -n | tail | cut -f1 -d' ' | while read i; do git ls-tree -r HEAD | grep "$i"; done



100644 blob 6209b3840fa470a534e670cff93bce698ba60819 .bashrc


100644 blob 1131e7127cb2cf6c1f854f728a1794262cdf85f6 .vimrc


100644 blob a249a5ae9b33553f4484da42a019ed14e5f44e21 .vim/colors/clrs.vim


100644 blob f329f223953827e59954f67ad4d76568b6dd894e .config/openbox/rc.xml



阅读更多:https://www.tecmint.com/rsnapshot-a-file-system-backup-utility-for-linux/

$ git verify-pack --help 

解压缩Git packfiles

Git内部-打包文件

Git-从SHA1中查找文件名


答案2:

下面是使用git ls-tree sub命令的另一个整洁的解决方案:


$ git ls-tree -rl HEAD | sort -k4 -n | tail | awk '{print $4, $5}' |


numfmt --to=iec-i



4.0Ki .bashrc


4.0Ki .config/conky/conky.conf


4.5Ki .config/rofi/config.rasi


5.4Ki .vim/notes


7.2Ki .config/tint2/tint2rc


7.5Ki .bash_functions


7.5Ki .vimrc


19Ki .vim/colors/clrs.vim


38Ki .config/openbox/rc.xml


63Ki .config/ipfilter.dat



  • -r递归列出文件
  • -l显示blob (文件)条目的对象大小
  • sort -k4 -n基于第四列的数字排序
  • tail剪切了最后10个项目
  • 使用awk只将第四列和第五列输出


  • COM  COMM  GIT  Comma  命令行  显示  
    相关文章