如何将git日志导出到文本文件?

118

我想将存储库所有提交记录的日志导出到文本文件中,有没有办法实现这一点?


1
可能是Git日志输出日志文件的重复问题。 - Abhijeet
11个回答

185

你只需要禁用分页器。

git --no-pager log > log.txt

如果你想让它的显示更美观,可以使用git log的参数


因为以那种方式保存它会跳过分支的头信息,你有什么办法可以获取它吗?例如:commit b28b1ae828ee87ffdc675dc1de299b51d3eb2ea2(origin/master,...等等,当我保存它时,我再也看不到origin/master了。 - SubqueryCrunch
可以添加--decorate来实现这个功能,参考这个帖子 - eis

29

你尝试过 git log > log.txt 吗?



在你运行命令的当前工作目录中。 - Hindol
它的运行效果非常好。在尝试保存从“status”命令获取的信息时也可以工作。 - carloswm85

27
git log | clip 

复制到剪贴板,然后粘贴到文本文件中。

(特别是如果您遇到了换行的问题,通过这种方法,您可以将其复制并粘贴到Microsoft Word文档(.docx)中;因此每次提交都会有一个新的行!!!)


4
这似乎是Windows用户绕过直接向文件写入时出现的Unix行尾问题的最简单方法。 - MarredCheese
1
哇,好棒的回答!+1 - Arshad Ali
哇,太酷了!我从90年代初开始就一直在使用Windows,但我从来没有意识到可以将内容导入到剪贴板。我总是将内容重定向到文件,然后在记事本中打开。这真是个改变游戏规则的功能! - undefined

12
您可以使用>符号将输出发送到文件中。例如:
git log > commits.txt

11
git log --before="2019-2-23" --pretty=format:'"%h","%an","%ae","%aD","%s",' --shortstat --no-merges | paste - - - > log.txt

是的...这就是我需要的!谢谢。 - Tony O'Hagan

10

自提出此问题以来已经过了很长时间,而那时事情已经发展了。

但是,有趣的是这里所有答案都是正确的,但实际上没有真正解决一个非常普遍的“命令错误”问题。让我们试着理解一下......

谁知道它其实非常简单。运行一个简单的命令即可。

git log -p --all > git_log.txt

但是后来我遇到了一个错误

> warning: inexact rename detection was skipped due to too many files.
> warning: you may want to set your diff.renameLimit variable to at least 2951 and retry the command.

我们遇到了一个问题。输出文件有半个G的大小。

我们只需要2018年上半年的数据,这可以使用--after--until选项轻松实现。

git log --pretty=format:"%ad - %an: %s" --after="2018-01-01" --until="2018-06-30" > git_log.txt

这对我们的目的很有效,而且知道如果需要可以更改格式是很好的。


4
你可以通过以下两种方式使日志报告更加清晰:
(1) 设置最新提交的数量(例如,在下面的命令中,我们获取最新的50次提交,你可以将其更改为100、500等);
(2) 在一行中显示长的提交。此命令会显示当前分支的提交日志:
 git log --oneline -50 > log50_latest_commits.txt

(3) 如果您想在所有分支上显示提交

 git log --all --oneline -50 > log50_latest_commits.txt

生成的文本文件将保存在当前目录中。
参考资料:https://git-scm.com/docs/git-log (测试于git version 2.11.0.windows.1,并且适用于许多其他版本的Git)

3
在我的情况下,我发现这非常有帮助:
``` git log --after="2020-3-20" --pretty=format:'Author : %an %nDate/Time : %aD%nCommit : %s' | paste > log.txt ```
这将生成以下内容:
- 作者:你的名字 - 日期/时间:提交日期和时间 - 提交信息:提交消息

即使我更新了年份,这仍然只给了我一个空的log.txt文件。 - Kelsey Hannan

2
这是我在Windows 7上使用Git Bash时的解决方法:
将以下命令输入到Git Bash中:git log > /C/Users/<user-name>/Desktop/git-log.txt <user-name>替换为您的用户名。 文件将被导出到您的桌面,您可以从那里阅读它。
祝好运...

1
我找到了一篇文章可以帮助你。如何生成变更日志的文章 你可以使用一个叫做“changelog”的工具。
npm install generate-changelog -g
changelog generate

它将创建一个格式良好的CHANGELOG.md文件。
问候。

不是每个人都安装了npm。 - Spikegee

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