【问题标题】:How can I see the differences between two branches?如何查看两个分支之间的差异?
【发布时间】:2012-04-07 17:55:22
【问题描述】:

我有两个分支:branch_1branch_2

我怎样才能看到它们之间的区别?

【问题讨论】:

  • 您想要与简单的git diff branch_1 branch_2 不同的东西吗? (注意,如果名称 branch_1 和 branch_2 也命名文件,则需要git diff branch_1 branch_2 --
  • 引用的副本没有回答问题...确定哪些文件已更改为 git diff --name-status master..branchName 与查看分支之间的确切差异与 git diff branch_1 branch_2 之类的内容明显不同。或者也许我遗漏了一些明显的东西......
  • “重复”不仅是一个不同的问题,这个问题是“git diff 两个分支”的第一名谷歌匹配。
  • git difftool branch..otherBranch 让您可以看到您选择的可视化工具的不同之处。例如融合。这就是答案。

标签: git git-diff


【解决方案1】:

代码就是git diff master..develop

选项:

  • 您可以添加--name-only 以仅查看文件名。
  • 如果您想查看特定文件或文件夹的更改。然后在末尾添加-- folderOrFileName
  • 如果你想比较本地分支和远程分支,然后fetch --all获取所有远程分支,然后运行git diff --name-only [branchName]..origin/[branchName]。例如git diff --name-only develop..origin/develop

【讨论】:

    【解决方案2】:

    这很简单。您只需转到一个分支(例如,main 是您的分支)。

    运行命令

    git checkout main
    git diff branch2
    

    【讨论】:

      【解决方案3】:

      你想使用git diff

      git diff [<options>] <commit>..​<commit> [--] [<path>…​]
      

      其中&lt;commit&gt; 是您的分支名称、提交的哈希值或速记符号引用

      例如git diff abc123…def567git diff HEAD..origin/master

      这将产生两个分支的尖端之间的差异。如果您希望找到它们共同祖先的差异进行测试,您可以使用 三个 点而不是 两个

      git diff <commit>...<commit>
      

      如果您只想检查哪些文件不同,而不是内容有何不同,请使用--name-only

      git diff --name-only <commit>..​<commit>
      

      【讨论】:

      • 相同的语法适用于比较分支与标签或标签与另一个标签。
      • 注意,以上两条命令后还可以添加文件名或文件夹名。
      • @chiyachaiya 您的解释对我有所帮助,但 git diff b1...b2 与 git diff b2...b1 不同。例如,一旦我们从 b1 启动 b2,并且如果我们对 b1 进行一些更改,git diff b2...b1 将显示在 b2 启动后对 b1 所做的更改。如果我们执行 git diff b1...b2 ,它将对 b2 进行不在 b1 中的更改。
      • 如果你得到fatal: bad revision 'some-branch',那么这可能是一个远程分支。你可能需要git diff remotes/origin/some-branch my-local-branch
      • git diff ..branch_2 将签出的分支与 branch_2 进行比较
      【解决方案4】:

      您可以通过- git diff b1...b2 或者您可以使用以下方式显示提交差异 - git log b1..b2 您可以使用漂亮的图形方式查看提交差异 - git log --oneline --graph --decorate --abbrev-commit b1..b2

      【讨论】:

        【解决方案5】:

        有很多不同的方法来比较分支,这取决于您需要的具体用例。

        很多时候你想比较是因为有些东西坏了,你想看看有什么变化,然后修复它,然后在提交之前再次查看变化。

        就个人而言,当我想查看差异时我喜欢做什么:

        git checkout branch_1 # checkout the oldest branch
        git checkout -b compare-branch # create a new branch
        git merge --no-commit --squash branch_2 # put files from the new branch in the working folder
        git status # see file names that changes
        git diff # see the content that changed.
        

        使用此解决方案您将看到差异,您还可以使用git status 仅看到文件名,最重要的部分您将能够在看到差异时执行branch_2(branch_2 在工作树上)。如果出现问题,您可以编辑文件并修复它。任何时候,您都可以再次输入 git statusgit diff 以查看新编辑与 branch_a 的差异。

        【讨论】:

          猜你喜欢
          • 2012-12-07
          • 1970-01-01
          • 2016-06-17
          • 2022-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-15
          • 1970-01-01
          相关资源
          最近更新 更多