我如何看待两个分支之间的差异?

我如何看到分支branch_1branch_2之间的差异?

1927589 次浏览

使用#0

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

<commit>是分支名称、提交哈希或速记符号引用。

示例:git diff abc123..def567git diff HEAD..origin/master

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

git diff <commit>...<commit>

要检查哪些文件不同,而不是内容如何不同,请使用--name-only

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

请注意,在<commit>..<commit>(两个点)语法中,点是可选的;以下是同义词:

git diff commit1 commit2

有许多不同的方法来比较分支,这取决于您需要的特定用例。

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

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

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

使用此解决方案,您将看到diff,您也可以只看到使用git status的文件名,最重要的部分是,您将能够在看到diff时执行branch_2(branch_2在工作树上)。如果有什么损坏,您可以编辑文件并修复它。任何时候,您都可以再次键入git statusgit diff来查看从新编辑到branch_a的差异。

您可以通过以下方式显示差异-git diff b1...b2或者您可以使用以下方式显示提交差异-git log b1..b2你可以看到提交差异在一个很好的图形方式使用-git log --oneline --graph --decorate --abbrev-commit b1..b2

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

git checkout maingit diff branch2
git diff master..develop

选项:

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

在Eclipse(J2EE版本)中,打开“Window-->Show view-->Git Reposential”。如果你已经签出了2个本地git分支的例子,那么你将有一堆分支在本地部分。选择任何2个git本地分支并做"右键单击并选择"在树菜单中相互比较"。

打开视图“Git Tree Compare”,你将能够看到所有文件的并排diff。

有时把差异看成一棵树是很好的…

git difftool --dir-diff branch..otherBranch

例如,当bit桶决定时,它将只有向您显示“三路合并”差异,而不是您选择的两个分支之间的实际完全差异。

这将将diff显示为一棵树在您选择的工具中。例如在meld中。

灵感来自@GregRundlett评论。

在功能分支上时,合并您的目标分支,然后对其运行差异。例如,如果您想查看feature分支添加到master的更改,请执行以下操作:

// Fetch from all remotesgit fetch
// Check out your feature branchgit checkout feature
// Merge origin/master to your branchgit merge origin/master
// Compare to origin/mastergit diff origin/master

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

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

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

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

    git diff branch1 branch2 path/to/file

  2. git log命令也可用于查看两个分支之间的差异。使用-左-右参数运行git log命令和您希望比较的两个分支,如下所示:

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