Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
机器可读格式的Git状态,具有相对于当前目录的路径_Git - Fatal编程技术网

机器可读格式的Git状态,具有相对于当前目录的路径

机器可读格式的Git状态,具有相对于当前目录的路径,git,Git,是否可以以机器可读格式(-z)但使用相对于当前目录的路径(-s)输出git status 当前,当我使用-z-s时,路径的格式改为相对于repo root git status -z | sed "s:\(^\|\x00\).. :\0$(git rev-parse --show-cdup):g" 此命令获取根目录的相对路径,并将其注入状态输出,以便这些路径再次相对于当前工作目录 免责声明:此sed脚本可能不适用于所有版本的sed此sed不适用于FreeBSD(不确定MacOS)。我认为sed

是否可以以机器可读格式(
-z
)但使用相对于当前目录的路径(
-s
)输出
git status

当前,当我使用
-z-s
时,路径的格式改为相对于repo root

git status -z | sed "s:\(^\|\x00\).. :\0$(git rev-parse --show-cdup):g"
此命令获取根目录的相对路径,并将其注入状态输出,以便这些路径再次相对于当前工作目录


免责声明:
sed
脚本可能不适用于所有版本的
sed

sed
不适用于FreeBSD(不确定MacOS)。我认为sed正则表达式不适用于嵌入式NUL,尽管可能还有其他问题。但这通常是正确的想法:我们必须在事后用
--show cdup
results解决问题。@torek我没有可用的FreeBSD。告诉我如何在FreeBSD上正确地执行此操作,我会很高兴地更新我的答案。我会使用一个功能更强大的过滤器,可能是Perl(尽管我非常讨厌Perl:-)。或者只是在机器读取
git status-z
machine-readable输出的任何情况下执行此操作……但不一定安装Perl。例如,在Git for Windows或Cygwin安装上。除此之外,如果OP想要使用perl或任何他用来读取数据的工具,他可以阅读答案作为如何操作的秘诀符合事实的(我现在倾向于自己用Python写这类东西,但不是所有的安装都有Python。)我想值得注意的是,并不是所有的
sed
s都能把这当作一个警告来处理,否则只需将答案保留为“这就是想法”。。。