2697

我有两个分支:branch_1branch_2.

我怎样才能看到它们之间的差异?

4

5 回答 5

3602

你想使用git diff

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

<commit>您的分支名称、提交的哈希值或速记符号引用在哪里

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

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

git diff <commit>...<commit>

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

git diff --name-only <commit>..​&lt;commit>

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

git diff commit1 commit2
于 2012-03-23T06:11:26.743 回答
44

这很简单。你只去一个分支(例如main是你的分支)。

运行命令

git checkout main
git diff branch2
于 2021-11-11T13:36:38.823 回答
8

代码很简单git diff master..develop

选项:

  • 您可以添加--name-only以仅查看文件的名称。
  • 如果您想查看特定文件或文件夹的更改。然后-- folderOrFileName在最后添加。
  • 如果要将本地分支与远程分支进行比较,则fetch --all获取所有远程分支,然后运行git diff --name-only [branchName]..origin/[branchName]​​. 例如git diff --name-only develop..origin/develop
于 2021-12-20T03:01:30.940 回答
6

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

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

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

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.

于 2021-08-31T14:18:58.797 回答
6

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

于 2021-09-12T08:15:22.197 回答