HEAD修订的问题

问题描述 投票:2回答:2

我尝试在脚本中在Mac OS X 10.11上执行命令git rev-list HEAD --count

#!/bin/bash
git=`sh /etc/profile; which git`
buildNumber=`"$git" rev-list --all |wc -l`
echo "$buildNumber"

但我得到下一个错误:

用法:git rev-list [OPTION] ... [ - paths ...]限制输出: - max-count =

我的脚本位于gitRepository/Folder/Scripts/my_script.sh

如果我在root git文件夹中运行git rev-list HEAD --count,我得到结果1049,但是如果我从../Scripts运行它我得到一个错误:

致命的:模糊的论点'HEAD':未知的修订或路径不在工作树中。使用' - '将路径与修订分开,如下所示: 'git <command> [...] - [...]'

它不是一个空的存储库。

可能是什么问题呢?

git macos osx-elcapitan
2个回答
0
投票

在大多数情况下,需要读取/写入特定存储库的Git命令,即除了配置和帮助之外的大多数命令都需要在git存储库中的某处执行。这将意味着包含.git目录及其子目录的任何目录以及裸存储库的根目录。

您收到的错误表明当前目录不是Git目录。

要将cd修复到所需目录或使用类似以下命令:

git --git-dir=/path/to/repo/.git rev-list HEAD --count

0
投票

正确的命令,除了添加--git-dir与适当的Git repo文件夹,将是:

git rev-list --count HEAD

参见commit 8d6ba49commit b00b6accommit 61de0ffcommit dcbaa0bcommit bdbc17ecommit a378feecommit 441ee35Matthew DeVore (matvore)(2018年10月5日)。 (由Junio C Hamano -- gitster --合并于commit f2e2136,2018年10月16日)

tests:正确地命令git-rev-list的参数

在调用git-rev-list时将位置参数放在标志之前是一个常见的错误。 最后排序位置参数。

例如,不要这样做:

git -C pc1 rev-list HEAD --quiet --objects --missing=print

但:

git -C pc1 rev-list --quiet --objects --missing=print HEAD
© www.soinside.com 2019 - 2024. All rights reserved.