【问题标题】:Git diff for specific files in different folders不同文件夹中特定文件的 Git diff
【发布时间】:2021-05-03 15:38:15
【问题描述】:

我有以下文件夹结构:

| folder1 
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   ├── file5
│   ├── fileN



| folder2 
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   ├── file5
│   ├── fileN

我想检查文件1、2、5和15之间的差异。有没有办法使用git diff检查这些文件之间的差异,而不是:

git diff folder1/file1 folder2/file1 

git diff folder1/file2 folder2/file2

git diff folder1/file5 folder2/file5

是否可以将文件名写入文档并让git检查差异?

最好的问候

【问题讨论】:

    标签: git git-diff


    【解决方案1】:

    你可以让 git diff 比较两棵树(“树”是 git 技术术语中的一个目录,代表 git 存储中的一个对象),然后指定要比较的文件:

    git diff HEAD:folder1/ HEAD:folder2/ -- file1 file2 file5
    

    您可以尝试difftool -d,它会调用外部差异查看器,并且可能会提供更好的 UI 体验:

    git difftool -d HEAD:folder1/ HEAD:folder2/
    # or :
    git difftool -d HEAD:folder1/ HEAD:folder2/ -- file1 file2 file5
    

    【讨论】:

      【解决方案2】:

      这是回答你问题的最后一行:

      是否可以将文件名写入文档并让git检查差异?

      只要您在文件中有想要用作命令行参数的信息,就可以使用反引号或$(...) 表示法将该文件读入命令行。

      如果我采用@LeGEC 的解决方案:

      git diff HEAD:folder1/ HEAD:folder2/ -- file1 file2 file5
      

      然后我将文件名放入一个名为filelist的文件中

      $ cat filelist
      file1
      file2
      file5
      

      然后我可以像这样在命令行中读取文件列表:

      git diff HEAD:folder1/ HEAD:folder2/ -- $(cat filelist)
      

      【讨论】:

      • 值得注意的是:这是一个 shell 功能 (sh/bash),而不是 Git 功能。如果您有其他类型的命令行解释器,请了解 那个 是如何实现此功能的。
      【解决方案3】:

      这应该可行:

      git diff HEAD:folder1/file1 HEAD:folder2/file1
      

      【讨论】:

        猜你喜欢
        • 2019-12-12
        • 2013-05-16
        • 1970-01-01
        • 2015-12-26
        • 2023-01-20
        • 2014-12-03
        • 2010-10-18
        • 2013-07-23
        • 2011-05-27
        相关资源
        最近更新 更多