在Git仓库中给定一个单独的文件,我该如何最轻松地跨多个本地分支进行差异比较? 我可以一次检出每个分支,并将其与公共基线进行差异比较,但我正在寻找一种轻松可视化5个或更多分支之间的差异的方法。
在Git仓库中给定一个单独的文件,我该如何最轻松地跨多个本地分支进行差异比较? 我可以一次检出每个分支,并将其与公共基线进行差异比较,但我正在寻找一种轻松可视化5个或更多分支之间的差异的方法。
不需要将文件签出以供给 git diff
使用:
git diff <revision>:<path> <revision>:<path>
Git称之为blob的两个名称,这是它对文件的通用术语。1因此,如果您想比较提交a123456
中文件README.txt
的内容与提交fedcba9
中README.txt
的内容:
git diff a123456:README.txt fedcba9:README.txt
a123456
)是分支develop
的最新提交,那么分支名称在此处适用:git diff develop:README.txt fedcba9:README.txt
但是,再次强调,比较仅限于成对的左侧文件和右侧文件。
正如eftshift0在评论中所指出的那样,如果文件在两个提交中具有相同的path
,您可以让Git diff提交并告诉您有关该文件的信息:
git diff <commit1> <commit2> -- <path>
git diff $old $new -- dir/sub/
这里为您提供一份指南,告诉您如何处理 dir/sub/
目录下的 每一个 文件,以将提交记录 $old
的内容转换成提交记录 $new
的内容,并且:
git diff $old $new -- $file1 $file2
1实际上,Git将符号链接目标存储为blob内容,因此更多的内容需要被存储。
git diff revision1..revision2 -- some-path
。使用@toreks的示例之一:git diff a123456..fedcba9 -- README.txt
。 - eftshift0