【问题标题】:Git: How to diff two different files in different branches?Git:如何区分不同分支中的两个不同文件?
【发布时间】:2011-12-29 04:33:16
【问题描述】:

我在不同的分支中有两个不同的文件。 如何在一个命令中区分它们?

类似

# git diff branch1/foo.txt branch2/foo-another.txt

我可以检查另一个文件,对其进行比较并恢复,但这是非常肮脏的解决方案。

【问题讨论】:

  • @EugenKonkov 这不是重复的,因为这个问题是询问如何区分不同分支中的 不同文件。链接的问题仅询问如何区分不同分支中的相同文件

标签: git git-diff


【解决方案1】:
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt

你也可以使用相对路径:

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt

【讨论】:

  • 太棒了!我当然无法从git help diff 推断出这一点。顺便说一句,这些不必是冒号前面的分支名称,但可以是任何类型的提交引用(例如 SHA-1 值)。
  • 重要提示:Windows 上的 Git 要求完整的 itemspec 为 unix 名称。即 branch1:full\path\to\foo.txt 失败,而 branch1:full/path/to/foo.txt 工作正常,full\path\to\foo.txt (无分支)
  • 使用git difftool,然后删除branch2:,这将允许您编辑当前工作树中的文件(以带来来自branch1的更改)
  • 在 linux 上试用 git 版本 1.8.3.1,只允许相对路径。
【解决方案2】:

旁注:不需要完整路径,您可以以./ 开头以获得相对路径。有时会很方便。

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt

【讨论】:

    【解决方案3】:

    题外话——见 cmets

    只是为了添加它,因为我发现它的语法非常简单:

    git diff <branch1> <branch2> <filepath>
    

    也适用于相对引用,例如:

    # compare the previous committed state from HEAD with the state branch1 was 3 commits ago
    git diff HEAD^ <branch1>~3 <filepath>
    

    【讨论】:

    • OP 专门要求提供“不同的文件”。您的答案是比较两个不同分支中的同一个文件。
    • @EtienneMiret 你说得对,我错过了重要的一点。题外话。
    【解决方案4】:

    有很多方法可以比较来自两个不同分支的文件。例如:

    • 如果名称相同或不同:

       git diff branch1:file branch2:file
      

      示例:

       git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
      
    • 仅当名称相同并且您想将当前工作目录与某个分支进行比较时:

      git diff ..someBranch path/to/file
      

      示例:

      git diff ..branch2 full/path/to/foo.txt
      

      在此示例中,您将实际分支中的文件与 master 分支中的文件。

    您可以查看此回复:

    Compare a file from two different branchs in Git

    【讨论】:

      【解决方案5】:

      您可以指定要应用的git diff 的开始和范围。范围用.. 表示法表示。

      branch1=somebranch
      branch2=someotherbranch
      git diff ${branch1}..${branch2} -- file_path
      

      【讨论】:

      • 这只是比较两个分支中的同一个文件;问题是关于两个分支中的两个不同文件。
      猜你喜欢
      • 2017-08-19
      • 2021-11-13
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      相关资源
      最近更新 更多