显示两个修订版之间已更改的文件

时间:2009-05-05 00:48:00

标签: git branch git-branch git-diff

我想合并两个已分开一段时间的分支,并想知道哪些文件已被修改。

遇到此链接:http://linux.yyz.us/git-howto.html这非常有用。

比较我遇到的分支的工具是:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

想知道是否有类似“git status master..branch”之类的内容,只能看到两个分支之间不同的文件。

如果不创建新工具,我认为这是您现在最接近的工具(如果文件被多次修改,当然会显示重复):

  • git diff master..branch | grep "^diff"

想知道我错过了什么......

18 个答案:

答案 0 :(得分:2391)

将当前分支与master分支进行比较:

$ git diff --name-status master

比较任何两个分支:

$ git diff --name-status firstbranch..yourBranchName

阅读official documentation中的git diff

答案 1 :(得分:377)

尝试

$ git diff --stat --color master..branchName

这将为您提供有关每项更改的更多信息,同时仍然使用相同数量的行。

如果要以其他方式合并,您还可以翻转分支以更清晰地了解差异:

$ git diff --stat --color branchName..master

答案 2 :(得分:150)

另请注意,git具有便宜且易于分支的特点。如果我认为合并可能有问题,我会为合并创建一个分支。因此,如果master包含我想要合并的更改,而ba是我的分支,需要来自master的代码,我可能会执行以下操作:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

最终的结果是我必须在一个扔掉的分支上尝试合并,然后再拧紧我的分支。如果我自己纠缠不清,我可以删除ba-merge分支并重新开始。

答案 3 :(得分:53)

如果有人试图从两个分支生成diff文件:

git diff master..otherbranch > myDiffFile.diff

答案 4 :(得分:35)

还有一种基于GUI的方法。

您可以使用 gitk

  1. 执行命令

    $ gitk --all
    
  2. 右键单击分支提交,然后在弹出菜单中选择标记此提交

  3. 右键单击另一个分支的提交,然后选择 Diff this - >标记提交 Diff标记提交 - >此
  4. 然后在右下方面板中会有一个更改的文件列表,并在左下方面板中显示差异细节。

答案 5 :(得分:31)

在这种情况下使用meld的另一个选择是:

git difftool -d master otherbranch

这不仅可以查看文件之间的差异,还可以轻松指向并单击特定文件。

答案 6 :(得分:29)

请注意,如果您不喜欢结果,git可以轻松尝试合并并避免任何问题。它可能比提前寻找潜在问题更容易。

答案 7 :(得分:15)

如果您只在某些文件中查找更改,则:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1是可选的,如果未提供branch1,则默认情况下将考虑当前分支(您所在的分支)。 e.g:

git diff master -- controller/index.js

答案 8 :(得分:14)

当协同工作或同时处理多个功能时,通常上游甚至主人包含未包含在分支中的工作,并且会错误地出现在基本差异中。

如果您的上游可能已经移动,您应该这样做:

git fetch
git diff origin/master...

使用git diff master可以包含或不包含相关更改。

答案 9 :(得分:9)

如果您使用IntelliJ IDEA,还可以将任何分支与当前工作分支进行比较。有关详细信息,请参阅http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827。这也可以在free edition中找到。

答案 10 :(得分:6)

有两个分支可以说

  • A(你工作的分公司)
  • B(您要比较的另一个分支)

在分支A中,您可以输入

git diff --color B

然后这会给你输出

enter image description here

关于这一点的重点是

  1. 绿色的文字位于分支A

  2. 分支B中有红色文字

答案 11 :(得分:6)

这里有很多答案,但我想添加一些我常用的东西。如果您位于要比较的分支之一,我通常会执行以下操作之一。为了这个答案,我们会说我们在二级分支机构。取决于您当时所需的视图取决于您选择的视图,但大部分时间我都使用两者中的第二个选项。如果您试图恢复原始副本,第一个选项可能很方便 - 无论哪种方式,都可以完成工作!

这将比较master和我们所在的分支(这是次要的),原始代码将是添加的行,新代码将被视为已删除的行

git diff ..master

OR

这也会比较master和我们所在的分支(这是次要的),原始代码将是旧行,新代码将是新行

git diff master..

答案 12 :(得分:0)

如果您喜欢GUI并使用Windows,这是一种简单的方法。

  1. 下载WinMerge
  2. 将两个分支签出到不同的文件夹中
  3. 使用WinMerge逐个文件夹进行比较。如果其中一个分支是您正在使用的分支,您也可以轻松进行修改。

答案 13 :(得分:0)

git diff revision_n revision_m

如果revision_nrevision_m是连续的提交,则其输出与 git show revision_m

答案 14 :(得分:0)

对于正在寻找GUI解决方案的人来说,Git Cola有一个非常不错的“分支Diff查看器( Diff -> Branches .. )。” / p>

答案 15 :(得分:0)

您还可以使用 visual diff

例如,如果您使用的是Sourcetree,则只需select any two commits in log view

(我个人更喜欢在大多数情况下使用GUI,并且将其发布给那些可能不熟悉GUI选项的人。)

答案 16 :(得分:-1)

如果您使用的是Github / Github Enterprise,则可以通过访问存储库路径的URL /compare(例如https://github.com/http4s/http4s/compare)来使用Web UI。 您可以选择要比较的分支/提交/标签: Github Compare Screenshot

并且差异将在github界面的URL /compare/{x1}...{x2}上显示,其中x2x1是您要比较的分支/提交/标记,例如: https://github.com/http4s/http4s/compare/release-0.18.x...master

您可以在Github Doc中看到更多内容。

答案 17 :(得分:-2)

您还可以使用例如 TortoiseGit 轻松比较已更改文件的分支。只需点击 浏览参考 ,然后选择您要比较的分支机构。

例如,如果您将您的分支 master 进行比较,那么您将获得将在 master 中更改的文件列表决定将 your-branch 合并到 master 中。

如果您将您的分支您的分支 master进行比较,那么您将会有不同的结果