首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git命令行和批处理文件有不同的输出。

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

Stack Overflow用户
提问于 2015-04-01 20:35:35
回答 1查看 2.4K关注 0票数 4

我正在创建一个简单的单行批处理文件来以我喜欢的格式运行git日志。当我在PowerShell时,我输入:

代码语言:javascript
复制
git log --pretty=format:"%ai%x09%H%x09%s" > commitlog.csv

它给出了我想要的输出。这是提交作者的日期和时间( ISO格式),后面是选项卡,后面是完整的SHA Hash,后面是选项卡,后面是notes/description。它以我想要的方式在Excel中打开。

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

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

代码语言:javascript
复制
git log --pretty=format:"%%ai%%x09%%H%%x09%%s" > commitlog.csv

我注意到这个命令呼应了这样的命令:

代码语言:javascript
复制
git log --pretty=format:"%ai%x09%H%x09%s"  1>commitlog.csv

它有一个"1“插入它的原因,但奇怪的是,创建一个文件的信息,只是排除标签,所以所有的运行在一起。我读到的比“需要”更多的是“需要”一克拉,就像“^>”一样

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

代码语言:javascript
复制
git log --pretty=format:"%%ai%%x09%%H%%x09%%s" ^> commitlog.csv

它响应了这样的命令:

代码语言:javascript
复制
git log --pretty=format:"%ai%x09%H%x09%s" > commitlog.csv

我盯着它看了很长一段时间,很多次了,看起来就像我在PowerShell中键入的那样,我希望得到同样的结果,但是我得到了一条错误消息:

代码语言:javascript
复制
fatal: ambiguous argument '>': unknown revision or path not in the
working tree.

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

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2015-04-01 21:31:51

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

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

代码语言:javascript
复制
git log --pretty=format:"%%ai%%x09%%H%%x09%%s%%x0D" > commitlog.csv

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

1>>在这里基本上是等价的。1只是stdout的数值(stderr为2),但默认情况是重定向stdout。Cmd只是在打印之前将其正常运行以命令其运行。

小nit:您可能想重定向到commitlog.tsv,因为值是由制表符分隔的,而不是逗号。:-)

Windows上的Git经常受到此类换行符问题的困扰,所以请注意其他地方的情况。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29400283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档