windows – Git命令行和批处理文件有不同的输出

前端之家收集整理的这篇文章主要介绍了windows – Git命令行和批处理文件有不同的输出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在创建一个简单的单行批处理文件,以我首选的格式运行git日志.当我在Power Shell中时,我输入:

git log --pretty=format:"%ai%x09%H%x09%s" > commitlog.csv

它给了我我想要的输出.它是提交作者的ISO格式的日期和时间,后跟一个选项卡,后跟完整的SHA哈希,后跟注释/描述.它在Excel中以我想要的方式打开.

我试图制作一个简单的批处理文件来做同样的事情,所以我不必记住格式字符串或搜索命令历史记录(无论如何偶尔会被清除).我注意到我必须使用双倍百分比%%来替换所有百分号.

在批处理文件的一个版本中,我有这一行:

git log --pretty=format:"%%ai%%x09%%H%%x09%%s" > commitlog.csv

我注意到这样的命令:

git log --pretty=format:"%ai%x09%H%x09%s"  1>commitlog.csv

由于某种原因,其中有一个“1”插入其中,但奇怪的是创建了一个包含信息的文件,只是排除了标签,所以它们一起运行.我读到的大于’>’需要以克拉为先,如此’^>’

因此,在批处理文件的下一个版本中,我将行更改为:

git log --pretty=format:"%%ai%%x09%%H%%x09%%s" ^> commitlog.csv

哪个命令如下:

git log --pretty=format:"%ai%x09%H%x09%s" > commitlog.csv

我已经盯了很长时间了很多次,看起来确实是我在PowerShell中键入的内容,我希望得到相同的结果,但我得到一条错误信息:

fatal: ambiguous argument '>': unknown revision or path not in the
working tree.

Use '--' to separate paths from revisions,like this:
'git <command> [<revision>...] -- [<file>...]'

我究竟做错了什么?

解决方法

git log –pretty = format:命令只用换行符(0x0A)终止每一行. Windows上的大多数工具(如记事本)都希望使用回车符(0x0D)和换行符终止行.但是,cmd只对新行进行了特殊处理,使控制台输出看起来很漂亮.

因此,批处理文件应如下所示:

git log --pretty=format:"%%ai%%x09%%H%%x09%%s%%x0D" > commitlog.csv

注意额外的%% x0D手动添加回车符.正如您已经发现的那样,需要%%来转义批处理脚本中的单个%.

1 GT;并且只是>在这里基本相同. 1只是stdout的数值(与stderr相比为2),但默认是重定向stdout. Cmd只是在打印之前进行规范化以命令它将运行.

Minor nit:您可能希望重定向到commitlog.tsv,因为值由制表符分隔,而不是逗号.

猜你在找的Windows相关文章