使用 windows cmd 将所有提交差异保存到 txt 文件

Save all commit diffs to txt file with windows cmd

任务是在本地的 gitlab 仓库中打开 Windows cmd 和 获取上个月的所有提交和 对于每个提交找到差异和 将其保存到名为:date_commitId_diff.txt

的 .txt 文件中

所以最后我想在 txt 文件中包含每个提交的差异。

我能够获得所有 ID 为:

的提交

git log --author=Piotr --date=short --before={2022-04-30} --after={2022-04-01} --pretty=format:"%h"

我也知道如何打印特定的差异 commit_id:

git show 2a62555ff

但是当我尝试对提交执行 FOR 循环时:

for /f "delims=" %i in ("'git log --author=Piotr --date=short --before={2022-04-30} --after={2022-04-01} --pretty=format:"%h'") do git show %i

我收到 'More?' 个问题...但没有看到解决方案以取得进展。

您的第一个示例使用 pretty=format:"%h"

但是你的第二次使用 --pretty=format:"%h': 似乎缺少一个不匹配的 "

我也会避免在 'git command'

周围使用双引号

for /f "delims=" %i in ('git log --author=Piotr --date=short --before={2022-04-30} --after={2022-04-01} --pretty^=format:"%h"') do git show %i

注意 --pretty^=format:"%h" 中的 ^
没有它,如 explained here,您将收到错误消息“fatal: invalid object name 'format'.”。

将它们(每个差异)保存在自己的文件中:

for /f "tokens=1,2 delims= " %i in ('git log --author=Piotr --date=short --before={2022-04-30} --after={2022-04-01} --pretty^=format:^"%h %ad^"') do (git show %i > %j_%i_diff.txt)

注意 tokens=1,2 delims= 指令和新格式 --pretty^=format:^"%h %ad^"