比较Git中的两个分支?

isu*_*anu 2149 git git-diff

我有两个分支,branch_1branch_2.

我想看看Git中两个分支之间的差异.

Laz*_*ger 2949

git diff branch_1..branch_2
Run Code Online (Sandbox Code Playgroud)

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

git diff branch_1...branch_2
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您也可以在上述两个命令后添加文件或文件夹名称. (48认同)
  • 相同的语法用于将分支与标记或标记与另一个标记进行比较. (45认同)
  • 如果你得到'致命:坏修改'某些分支',那么这可能是一个远程分支.你可能需要像`git diff remotes/origin/some-branch my-local-branch`这样的东西 (38认同)
  • `git diff ..branch_2`将签出的分支与branch_2进行比较 (35认同)
  • @chiyachaiya你的解释对我有帮助,但是git diff b1 ... b2和git diff b2 ... b1不一样.例如,一旦我们从b1开始b2,如果我们对b1进行一些更改,git diff b2 ... b1将显示b2开始后对b1所做的更改.如果我们执行git diff b1 ... b2,它将对b2进行更改,这些更改不在b1中. (12认同)
  • 范围语法也适用于`git log`.有了它,你可以看到提交消息,并且使用`--patch`选项,你可以一次看到一个diff提交. (9认同)
  • 为什么它只能从主分支工作?!(git 2.1.4)我有两个回购,从同一个克隆.一个人检查了主人,另一个人有......'其他'.来自"其他"分支:$ git diff other..master __fatal:模糊参数'other..master':未知的修订或路径不在工作树中.__ (7认同)
  • 不起作用:`fatal:ambiguous argument'branch1 ... branch2':未知的修订或路径不在工作树中. (6认同)
  • 我觉得有用的东西是使用`git diff branch_1..branch_2> C:\ diff.txt将差异打印到文件中 (3认同)
  • 对于远程分支机构,这对我不起作用。它从不返回任何东西。 (2认同)
  • https://github.com/schacon/gitbook/blob/86d1d3061f32e07b56851833c6673e66a04fdbba/text/10_Comparing_Commits_Git_Diff/0_%20Comparing_Commits_Git_Diff.markdown http://schacon.github.io/gitbook_com_3_com的逐字副本 (2认同)
  • 显然,自从这个答案以来,有些事情已经发生了变化,因为 $ git diff b1 b2 fatal: ambigeous argument 'b2': Unknown revision or path not in the work tree。$ git diff b1 b2 fatal:错误修订版“web-portal-hosts” $ git diff b1..b2 致命:不明确的参数“b1..b2”:未知修订版或路径不在工作树中。$ git diff b1..b2 -- 致命:错误修订 'ui-function-tests..web-portal-hosts' (2认同)
  • 如果您想查看两个分支之间特定文件的差异:`git diff branch_1..branch_2 -- filename` (2认同)
  • 在[摘录答案的原文](https://github.com/schacon/gitbook/blob/86d1d3061f32e07b56851833c6673e66a04fdbba/text/10_Comparing_Commits_Git_Diff/0_%20Comparing_G)中,名为`Difftest_commits_commits`。正如这里所写,第二句话没有任何意义。 (2认同)
  • 如果您遇到“致命:模糊参数”错误,您只需按照 [Dalin](/sf/users/16234011/) 的注释并指定“remotes/origin”(或任何您的远程称为回购协议)。 (2认同)
  • 还可以指定路径: `git diff BranchName1..BranchName2 --name-only -- /path/to/source/` 。`--name-only --` 仅用于文件名 (2认同)

Nee*_*mar 165

转到一个分支(例如main),然后diff针对另一个分支运行(例如branch2):

git checkout main
git diff branch2
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用,它没有显示任何变化。不过我只有本地提交。 (7认同)

Nag*_*aba 62

git diff master..develop
Run Code Online (Sandbox Code Playgroud)

选项:

  • 添加--name-only以仅查看文件的名称。
  • 添加-- folderOrFileName在最后可以查看特定文件或文件夹的变化。
  • 要将本地分支与远程分支进行比较,然后运行git fetch --all以获取所有远程分支,然后运行:
    git diff --name-only [branchName]..origin/[branchName]
    
    Run Code Online (Sandbox Code Playgroud) 例子:git diff --name-only develop..origin/develop


Bip*_*Lob 24

您可以简单地使用 显示差异git diff b1...b2,也可以使用 显示提交差异git log b1..b2

您可以使用良好的图形方式查看提交差异 git log --oneline --graph --decorate --abbrev-commit b1..b2

  • 我不知道 git log b1 b2,谢谢! (2认同)

Ami*_*ein 14

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

很多时候,您想要进行比较,因为有些东西损坏了,您想查看发生了哪些变化,然后修复它,并在提交之前再次查看发生了哪些变化。

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

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.
Run Code Online (Sandbox Code Playgroud)

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


pol*_*guy 9

有时很高兴看到差异是一棵树......

git difftool --dir-diff branch..otherBranch

或者将远程分支与本地工作区进行比较...

git difftool --dir-diff origin/branch .

例如,当 bitbucket出于性能原因决定时,它只会向您显示“三向合并”差异,而不是您选择的两个分支之间的实际完整差异。

这将在您选择的工具中将差异显示为树。例如在融合中。

受到@GregRundlett 评论的启发。


Rit*_*ger 7

有两种方法可以查看两个分支之间的差异。对每个分支中的文件所做的修改将通过这些命令显示。

\n
    \n
  1. 使用该git diff命令查看 Git 存储库中两个分支之间的差异。

    \n

    git diff branch1 branch2将显示所有差异。

    \n

    如果您希望比较两个分支之间的特定文件,可以使用以下命令:

    \n

    git diff branch1 branch2 path/to/file

    \n
  2. \n
  3. git log命令还可用于查看两个分支之间的差异。使用 \xe2\x80\x94left-right 参数和要比较的两个分支运行 git log 命令,如下所示:

    \n

    git log --left-right branch1...branch2

    \n
  4. \n
\n


归档时间:

查看次数:

1452138 次

最近记录:

10 年,4 月 前