给定 Git 存储库中的单个文件,我如何才能最轻松地diff跨多个本地分支?我可以一次检查每个分支,并将其与公共基线进行比较,但我正在寻找一种方法来轻松可视化 5 个或更多分支之间的差异。
\n\n\n给定 Git 存储库中的单个文件,我如何才能最轻松地
\ndiff跨多个本地分支?
Gitgit diff一次实际上只比较两个事物。这两件事可以是整个提交/树,也可以是单个文件。
要命名提交,您可以使用gitrevisions 文档中描述的任何表达式,包括分支名称。如果您命名一个提交,git diff则会比较该提交的已保存快照(其树)。如果您命名一个文件,git diff则比较该文件。正如文档git diff所述,当您想要比较两个文件时,您必须命名这两个文件。(这与例如 相比git diff HEAD,它将HEAD提交\xe2\x80\x94 或者更确切地说,其树快照\xe2\x80\x94 与整个工作树进行比较。)
\n\n\n我可以一次检查每个分支,并将其与公共基线进行比较......
\n
无需签出文件即可将其提供给git diff:
git diff <revision>:<path> <revision>:<path>\nRun Code Online (Sandbox Code Playgroud)\n\n命名了 Git 所称的blob中的两个,它或多或少是文件的通用术语。1README.txt因此,如果您想将commit 中的 文件内容a123456与README.txtcommit 中的文件内容进行比较fedcba9:
git diff a123456:README.txt fedcba9:README.txt\nRun Code Online (Sandbox Code Playgroud)\n\n如果您想要的提交(例如a123456)是分支的提示提交develop,则分支名称在这里起作用:
git diff develop:README.txt fedcba9:README.txt\nRun Code Online (Sandbox Code Playgroud)\n\n但是,同样,比较是严格成对的:左侧文件与右侧文件。
\n\n正如eftshift0 在评论中指出的那样,如果文件path在两次提交中具有相同的内容,您可以让 Git diff 提交并告诉您有关该文件的信息:
git diff <commit1> <commit2> -- <path>\nRun Code Online (Sandbox Code Playgroud)\n\n如果您想要比较多个文件或整个子树,这特别有用:
\n\ngit diff $old $new -- dir/sub/\nRun Code Online (Sandbox Code Playgroud)\n\n为您提供有关如何处理每个文件的说明,dir/sub/以便将 commit 的内容转换$old为 commit 的内容$new,同时:
git diff $old $new -- $file1 $file2\nRun Code Online (Sandbox Code Playgroud)\n\n如果两个文件均已更改,则会告诉您这两个文件的更改情况。
\n\n1实际上,“更多”,因为 Git 将符号链接目标存储为 blob 内容。
\n| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |