代码之家  ›  专栏  ›  技术社区  ›  Micah

如何比较来自两个不同分支的文件?

  •  1281
  • Micah  · 技术社区  · 15 年前

    我有一个脚本,在一个分支上运行良好,在另一个分支上被破坏。我想并排看看这两个版本,看看有什么不同。有什么办法吗?

    我不是在寻找一个比较工具(我使用超越比较)。我正在寻找一个git diff命令,它允许我将主版本与当前分支版本进行比较,以查看发生了什么变化。我不是在合并什么的。我只想说

    git diff mybranch/myfile.cs master/myfile.cs
    
    10 回复  |  直到 8 年前
        1
  •  2111
  •   Community Mohan Dere    9 年前

    git diff 可以显示两次提交之间的区别:

    git diff mybranch master -- myfile.cs
    

    git diff mybranch..master -- myfile.cs
    

    如果两边都是 HEAD 可以省略(例如。 master.. 比较 master 头部

    你也可能对 mybranch...master (来自 git diff docs ):

    <commit> ,从两者的共同祖先开始 <提交> git diff A...B 相当于 git diff $(git-merge-base A B) B

    换句话说,这将使 主人 mybranch (但从那以后没有新的变化 我的分支


    在所有情况下 -- https://stackoverflow.com/a/13321491/54249 举几个例子。


    git difftool 如果您配置了一个。

        2
  •  399
  •   Vasiliy Zverev    7 年前

    你可以这样做: git diff branch1:path/to/file branch2:path/to/file

    如果已配置difftool,则还可以: git difftool branch1:path/to/file branch2:path/to/file

    相关问题: How do I view git diff output with visual diff program

        3
  •  155
  •   Joe Atzberger    11 年前

    更现代的语法:

    git diff ..master path/to/file

    双点前缀表示“从当前工作目录到”。你也可以说:

    • master.. ,即与上述相反。这和 master .
    • mybranch..master ,显式引用当前工作树以外的状态。
    • v2.0.1..master ,即引用标记。
    • [refspec]..[refspec]
        4
  •  32
  •   Peter Mortensen Pieter Jan Bonestroo    8 年前

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

    • 选项1:

      git diff branch1name branch2name path/to/file
      

      例子:

      git diff mybranch/myfile.cs mysecondbranch/myfile.cs
      

      在本例中,将mybranch branch中的文件与 在mysecondbranch分支中的文件。

    • 简单的方法:

       git diff branch1:file branch2:file
      

      例子:

       git diff mybranch:myfile.cs mysecondbranch:myfile.cs
      

    • 选择3: 如果要将当前工作目录与某个分支进行比较:

      git diff ..someBranch path/to/file
      

      git diff ..master myfile.cs
      

      在本例中,您要将实际分支中的文件与 主分支中的文件。

        5
  •  12
  •   Igbanam    9 年前

    git diff branch1 branch2 path/to/file

    这将检查文件之间的差异。变化 branch1 会是红色的。变化 branch2 会是绿色的。

    分支1 是过去和 分支2 是未来。可以通过反转diff中分支的顺序来反转: git diff branch2 branch1

        6
  •  5
  •   Azad    8 年前

    git diff branch master -- filepath/filename.extension > filename.diff --cached
    
        7
  •  5
  •   charlesreid1    6 年前

    如果要对当前分支进行差异处理,可以命令并使用:

    git diff $BRANCH -- path/to/file

    $BRANCH ).

        8
  •  2
  •   SKT    7 年前

    git diff <branch name> -- <path + file name>
    

    这个命令可以帮助您比较两个不同分支中的同一个文件

        9
  •  1
  •   prometeu    7 年前

    使用提交散列如下:

    git diff <hash1> <hash2> <filename>
    

    哪里 可以是任何分支的任何提交,对于 .

        10
  •  0
  •   Nesha Zoric    8 年前

    git diff 以如下方式: git diff <source_branch> <target_branch> -- file_path

    git commands 以及它们的工作原理。

        11
  •  0
  •   Javier C. Issac Balaji    8 年前

    要比较git bash中的两个文件,需要使用以下命令:

    git diff <Branch name>..master -- Filename.extension   
    

        12
  •  0
  •   Dharmender Rawat    6 年前

    有两种情况可以比较文件:

    场景1: 比较远程分支中的文件(两个分支应该存在于远程存储库上)

    情景2:

    逻辑很简单。如果您向diff提供两个分支名称,它将始终比较远程分支,如果您只提供一个分支名称,它将始终比较本地工作副本和远程repo(您提供的那个)。您可以使用range来提供远程存储库。

    e、 g.结帐分行

    git checkout branch1
    
    git diff branch2 [filename]
    

    在这种情况下,如果您提供文件名,它将比较您的本地文件名副本和名为“的远程分支” 分支2

    git diff branch1 branch2 [filename]
    

    在本例中,它将比较名为“的远程分支的文件名 分支1 分支2 "

    git diff ..branch2 [filename]
    

    分支1 “对” 分支2 ". 所以,和上面一样。但是,如果您刚刚从另一个分支创建了一个分支,则称“主”,而当前分支不存在于远程存储库中,它将比较“远程”。 主人 “vs远程” ".

    希望它有用。