繁体   English   中英

裸机上的git diff

[英]git diff on a bare repo

我想看看上个月在gitlab服务器端改变了多少回购

cd /path/to/my/bare/repo.git/
git --git-dir . diff --shortstat "@{1 month ago}"
fatal: Unable to read log 'logs/refs/heads/master': No such file or directory

但是它在本地结账工作分支中工作正常。

有没有办法在没有太多麻烦的情况下做到这一点?

为了避免XY问题:我想通过Gitlab服务器上的数百个repos运行统计数据

试并确保在裸回购diff'ing时,指定两次提交(或差异将默认为工作树,它不以存在裸露回购 )。

你不需要--git-dir .

但是,在指定修订时使用日期将不起作用,因为它基于logs/refs ,而在一个简单的仓库中不存在

<refname>@{<date>}, e.g. master@{yesterday}, HEAD@{5 minutes ago}

ref后跟后缀@,括号对中包含日期规范(例如{yesterday}{1 month 2 weeks 3 days 1 hour 1 second ago}{1979-02-26 18:30:00} )指定在先前时间点的ref值。
此后缀只能在ref名称后立即使用,并且ref必须具有现有日志( $GIT_DIR/logs/<ref>

我发现这个问题是因为我变得fatal: This operation must be run in a work tree

如果您收到错误(在您的裸仓库中):

[ec2-user@xxxxx git]$ git diff 81dcb182e4d16b6894b69a5b31133b8d8ff6c5e2
fatal: This operation must be run in a work tree

确保你提供两个提交哈希差异(因为HEAD是一个符号引用)

[ec2-user@xxxxx git]$ git diff <BASE COMMIT HASH> <UPDATE COMMIT HASH>

例如。

[ec2-user@xxxxx git]$ git diff 11dcb182e4d16b6894b69a5b31133b8d8ff6c5ex 81dcb182e4d16b6894b69a5b31133b8d8ff6c5e2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM