当将git log导出到文本文件时,如何在换行时保留格式?

24

我如何为我的自定义git日志添加换行符?

git log --pretty=tformat:"%ai %s" > log.log

我希望在%s之后插入一个换行符

7个回答

26
您可以使用%n作为换行符:
git log --pretty=tformat:"%ai %s%n" > log.log

我已经这样做了,在Notepad++中查看时它可以工作,但在记事本中查看时仍然看起来像没有换行符。 - sceiler
2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Hamid Shahid

8

Pjz的回答对于Windows并不完全正确,但是经过一些尝试,我使它起作用了。需要反转的10和13字符,以及它们需要处于适当的十六进制格式中:

git log --pretty=tformat:"%ai %s%x0D%x0A" >log.log

4
其他针对Windows的答案会在文件中多出0x0A字符。Git已经在每个日志条目后添加了0x0A,因此您只需要添加缺失的0x0D即可:
git log --pretty=tformat:"%ai %s%x0D" >log.log

或者在批处理文件中:

git log --pretty=tformat:"%%ai %%s%%x0D" >log.log

4
原因是Git使用LF作为分隔符,而记事本和大多数Windows应用程序使用CRLF。以下脚本使我能够生成包含所有更改的文件。
del files.txt >nul 2>nul
git show --pretty="format:" --name-only HEAD > changes.txt
for /F "tokens=*" %%A in ('type "changes.txt"') do echo %%A >> files.txt

2
引号将会帮助你 - 只需将闭合引号放在下一行,例如:
git log --pretty=tformat:"%ai %s
" >log.log

and it should work.(它应该能够工作。)
另外,在git log --help的PRETTY FORMATS标题下,它列出了:
       ·   %m: left, right or boundary mark

       ·   %n: newline

       ·   %%: a raw %

尽管表面上“换行符”是Unix的换行符,但在Windows上,您需要使用直接的十六进制代码,例如:
git log --pretty=tformat:"%ai %s%x10%x13" >log.log

请查看我在CoverosGene的回答中的评论。另一方面,我如何在命令行中换行? - sceiler

1
如果您正在制作与git相关的Windows批处理文件,请记得将单个%转换为双重%。同时,添加回车符和换行符的十六进制代码。
例如:
git log --pretty=tformat:"%ai %s%x0D%x0A" >log.log

转换为 Windows 批处理文件
git log --pretty=tformat:"%%ai %%s%x0D%x0A" >log.log

0

我刚才也遇到了类似的情况,我想要添加一个换行符,因为在bash脚本中运行cat -e会影响格式。我尝试了这个页面和其他页面上的建议,但真正解决我的问题的是只需删除format:。只键入git log --pretty="%H"就会在最后一个结果后添加一个普通的换行符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接