git diff实际上对所有源代码都运行差异。如何在某个目录上执行此操作,以便可以查看它下面的文件的修改?
git diff
提供一个路径(在本例中是 myfile) ,然后运行:
git diff myfolder/
您应该养成查看这类文档的习惯。这是非常有用的,并将很快提高你的技能。这就是你做 git help diff的时候要注意的地方
git help diff
git diff [options] [--no-index] [--] <path> <path>
这两个 <path>是您需要更改到相关目录的内容。
<path>
如果要比较不同的分支,则需要使用 --将 Git 修订版与文件系统路径分开。例如,使用两个本地分支,master和 bryan-working:
--
master
bryan-working
$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/
或者从一个本地分支到一个远程分支:
$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
在 Git 中添加 无与伦比作为扩散工具,并添加一个 didir 别名,如下所示:
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
得到的 gitdiff 是:
git diffdir 4bc7ba80edf6 7f566710c7
参考文献: 比较整个目录
要使用 无与伦比作为 diff 目录的扩散工具,请记住启用如下符号链接:
在 文件夹比较视图 & rarr; 规矩(裁判图标)中:
然后,启用 follow 符号链接并更新会话默认值:
或者,
这样设置化名:
git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"
请注意,在任何一种情况下,对引用当前工作树的一侧(左侧或右侧)所做的任何编辑都会被保留。
如果要排除子目录,可以使用
git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)
不仅可以添加路径,还可以添加 git diff --relative以获取相对于该文件夹的结果。
git diff --relative
git -C a/folder diff --relative
使用 Git 2.28(Q32020) ,“ diff”系列中的命令学会了尊重“ diff.relative”配置变量。
diff
diff.relative
见 提交 c28ded8(2020年5月22日) by 劳伦 · 阿诺德(spk)。 (由 朱尼奥 · C · 哈马诺 gitster在 提交 e34df9a合并,2020年6月2日)
spk
gitster
添加配置选项 relative 签名: Laurent Arnoud Acked-by: oàn Tr something n Cotong Danh 设置为 true的 diff.relative布尔选项只显示由 relative选项的 path参数指定的工作目录/值的变化,并显示相对于上述目录的路径名。 教 --no-relative覆盖早期的 --relative 添加 git-format-patch (1)选项文档 --relative和 --no-relative
relative
签名: Laurent Arnoud Acked-by: oàn Tr something n Cotong Danh
设置为 true的 diff.relative布尔选项只显示由 relative选项的 path参数指定的工作目录/值的变化,并显示相对于上述目录的路径名。
true
path
教 --no-relative覆盖早期的 --relative
--no-relative
--relative
添加 git-format-patch (1)选项文档 --relative和 --no-relative
返回文章页面 文件现在包括:
返回文章页面 如果设置为“ true”,“ git diff”不会显示目录之外的更改,并显示相对于工作目录的路径名。
如果设置为“ true”,“ git diff”不会显示目录之外的更改,并显示相对于工作目录的路径名。
警告: 在 Git 2.34(Q42021)之前,当存在未合并的路径时,“ git diff --relative”(< a href = “ https://git-scm.com/docs/git-diff # Documents/git-ff.txt--relativeltpathgt”rel = “ noReferrer”> man )断开并/或产生不正确的结果。
见 提交8174627(2021年8月22日) by (sgn)。 (由 朱尼奥 · C · 哈马诺 gitster于2021年9月8日在 提交 c8f4916合并)
sgn
diff-lib : 忽略 $cwd 外部的路径 if-relatedask 报道: Thomas De Zeeuw 测试者: Carlo Arenas 签字人: oàn Tr something n Cotng Danh
diff-lib
报道: Thomas De Zeeuw 测试者: Carlo Arenas 签字人: oàn Tr something n Cotng Danh
对于 diff 系列命令,如果请求 --relative,我们可以告诉它们排除某些目录之外的更改。 在 diff_unmerge()中,如果请求的路径在感兴趣的目录之外,NULL将被返回,因此在 run_diff_files中尝试取消引用它的返回值时会遇到 NULL指针取消引用。 但是,在解除引用之前检查 diff_unmerge的返回值是不够的。 因此,差异引擎将尝试工作在这样的路径规范以后。 让我们不要对那些无趣的条目运行差异,而是。 作为一个副作用,通过这样跳过,我们可以节省一些 CPU 周期。
对于 diff 系列命令,如果请求 --relative,我们可以告诉它们排除某些目录之外的更改。
在 diff_unmerge()中,如果请求的路径在感兴趣的目录之外,NULL将被返回,因此在 run_diff_files中尝试取消引用它的返回值时会遇到 NULL指针取消引用。
diff_unmerge()
NULL
run_diff_files
但是,在解除引用之前检查 diff_unmerge的返回值是不够的。 因此,差异引擎将尝试工作在这样的路径规范以后。
diff_unmerge
让我们不要对那些无趣的条目运行差异,而是。 作为一个副作用,通过这样跳过,我们可以节省一些 CPU 周期。
我要找的是这个:
git diff <ref1>..<ref2> <dirname>
如果您已经安装并配置了 diff 工具(例如: 凯迪夫3)
git difftool -d branch1 branch2 /path/to/dir/