是否可以使用某种方式将 git diff
的输出保存到文件并保留着色?
我知道如何执行 git diff > filename.rtf
- 可以将结果保存到文件,但我想保留颜色。
是否可以使用某种方式将 git diff
的输出保存到文件并保留着色?
我知道如何执行 git diff > filename.rtf
- 可以将结果保存到文件,但我想保留颜色。
尝试:
git diff --color > foo.txt
cat foo.txt
或者:
less -R foo.txt
https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration:
Git自动给大部分输出着色,但如果你不喜欢这种行为,可以使用一个总开关来关闭所有Git的彩色终端输出。要关闭所有Git的彩色终端输出,请执行以下操作: $ git config --global color.ui false 默认设置是auto,当输出直接发送到终端时会给其着色,但当输出被重定向到管道或文件时会省略颜色控制代码。 你还可以将其设置为always,忽略终端和管道之间的差异。你很少会需要这样做;在大多数情况下,如果你希望在重定向的输出中使用颜色代码,可以通过向Git命令传递--color标志来强制使用颜色代码。默认设置几乎总是你想要的。将文件保存为 .diff 扩展名,然后在 Notepad++、Vim 或 SublimeText 中打开。
git diff > 20150203_someChanges.diff
感谢 @Monsingor
在Sublime Text 2中打开输出的差异文件。它会显示差异颜色。
对 @Gabe 的回答进行补充。
您可以将输出导入到一个 ANSI 转 HTML 的 Bash 脚本中,并将该输出重定向到一个 HTML 文件中:
git diff --color|./ansi2html.sh > changes.html
当然,HTML可以被任何浏览器查看,因此输出可以在Windows等系统中阅读。brew install gawk
。您还需要brew install gnu-sed
。 - Geoffrey Boothgit diff --word-diff --color commit1 commit2 | ansi2html > changes.html
。 - Olivier CaillouxVim的配色文件能够美观地展示git diff。
-c color.ui=always
,并且它会在重定向时仍然保持着色。例如:git -c color.ui=always status > file
。允许从浏览器查看任何已彩色化的终端文本,例如git diff或其他文本。
sudo apt-get install aha # https://github.com/theZiz/aha
aha
后,执行以下命令。git diff --color mysourcefile | aha > ~/cool_colorized.html
firefox ~/cool_colorized.html
作为文件重定向的替代方案,您还可以使用git diff --output
选项
git diff --color --output=aFile
cat aFile
# you would still see the colors
然而,请确保不要使用合并差异格式(有关合并提交的差异),例如 git diff -c
或 git diff --cc
从 Git 2.38(2022 年第三季度)开始,当显示组合差异时,某些差异选项(包括 --output
)目前被忽略;将它们标记为与该功能不兼容。
查看 提交 cfb19ae, 提交 e3d1be4 (2022年6月18日) 由 René Scharfe (rscharfe
) 提交。
(由 Junio C Hamano -- gitster
-- 合并于 提交 a2d1f00, 2022年7月11日)
combine-diff
: 如果给定了 --output,则中止报告人:Ævar Arnfjörð Bjarmason
签署人:René Scharfe
目前合并差异的代码仅写入 stdout。
如果静默忽略 --output
选项,则应中止并报告该事实。
但在那时,输出文件已经被创建(为空)。
因此,错误消息将是:
combined diff and '--output' cannot be used together
git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master > foo.txt
git remote rm remotes/b/master
命令将分支重置回其原始状态。 - Abhijeet