我想看看上个月在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
然而,它在本地结账工作分支中工作正常。
有没有办法在没有太多麻烦的情况下做到这一点?
避免X-Y问题:我想通过Gitlab服务器上的数百个repos运行统计信息
答案 0 :(得分:3)
尝试并确保,当在一个裸仓库中进行差异时,指定两个提交(或者diff会默认为工作树,而 bare repo中不存在强>)。
您不需要--git-dir .
然而,当specifying a revision不起作用时使用日期,因为它基于logs/refs
,它不存在于裸仓库中<\ n / p>
<refname>@{<date>}, e.g. master@{yesterday}, HEAD@{5 minutes ago}
后跟@后缀为@,括号对中包含日期规范(例如
{yesterday}
,{1 month 2 weeks 3 days 1 hour 1 second ago}
或{1979-02-26 18:30:00}
),指定前一点的ref值。时间。
此后缀只能在引用名称后立即使用,并且引用必须具有现有日志($GIT_DIR/logs/<ref>
)。
答案 1 :(得分:0)
我发现了这个问题,因为我收到了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