在文本文件中保存两个提交之间的整个git差异

61

有没有一种方法可以将两个 diff 之间的所有差异保存到文本文件中?

假设我想要保存 master 分支上 A1A10 之间的所有更改。

--A11-A10-A9-A8-A7-A6-A5-A4-A3-A2-A1-master

还有没有一种方法,可以在终端中获取整个差异,以便我可以复制粘贴?


1
git diff master~10 master >changes.diff 的意思是将最近的10个提交与当前的主分支进行比较,并将差异保存到 changes.diff 文件中。 - Joe
可能是 git diff commits difference 的重复问题。 - Joe
有没有办法只获取文件名? - Igor Donin
5个回答

69

当然:

git diff A10..A1 > my.diff

6
请注意,git diff 中的 A..B 符号是一种方便功能:diff 操作基于端点而非范围,因此在 diff 中,A..B 实际上意味着 A B - Jakub Narębski

18
git diff {commit1} {commit2} > diff.txt

{commit1} 和 {commit2} 分别指代你想要比较的起始和结束提交的引用(引用可以是完整或部分 SHA、标签、HEAD 等等)。


8
如果您只需要保存最近两个提交之间的差异,您也可以使用以下命令:
git diff HEAD^ HEAD > diff.txt

7

来自man手册..

git format-patch -k --stdout R1..R2 

该命令用于将从提交R1到R2之间的补丁以邮件格式输出到标准输出。-k选项指定在生成补丁时保留关键字,--stdout选项指定将结果输出到标准输出而不是文件。

4
要从diff中获得所有文件夹/文件名作为输出,请使用以下命令:
git diff <commit1> <commit2> --name-only

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