显示两个修订版本之间哪些文件已更改

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

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

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

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

想知道是否有像“混帐状态master..branch”只看到这两个分支之间的不同文件。

没有创build一个新的工具,我认为这是最接近你现在可以做到这一点(当然,如果一个文件被修改多次,这将显示重复):

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

想知道是否有我错过了…

尝试

 $ git diff --name-status master..branchName 

如果我能正确理解你,那就应该做你所需要的。

尝试

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

这会给你更多关于每个更改的信息,同时仍然使用相同数量的行。

如果要合并另一种方式,您也可以翻转分支以获得更清晰的差异图像:

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

还要记住,git有便宜和容易的分支。 如果我认为合并可能有问题,我创build一个合并分支。 所以,如果master有我想要合并的变化,并且ba是需要从主人的代码我的分支我可能会执行以下操作:

 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分支,重新开始。

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

 git diff master..otherbranch > myDiffFile.diff 

请注意,如果不喜欢结果,git可以轻松地尝试合并,退出任何问题。 事先预见潜在的问题可能比较容易。

还有一个基于GUI的方法。

你可以使用gitk

  1. 跑:

     $ gitk --all 
  2. 右键单击分支的提交 ,然后在popup菜单中select标记此提交

  3. 右键单击另一个分支的提交并selectDiff this – >标记提交Diff标记提交 – > this

然后在右下方的面板中会出现一个已更改的文件列表,并在左下方的面板中显示不同的详细信息。

在这种情况下使用融合的另一种select是:

 git difftool -d master otherbranch 

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

当协同工作或同时使用多个function时,通常上游甚至是主人都包含未包括在分支中的工作,并且会错误地显示在基本差异中。

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

 git fetch git diff origin/master... 

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

如果您正在使用IntelliJ IDEA ,则还可以将任何分支与您当前的工作分支进行比较。 有关更多信息,请参阅http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 。 这也是免费版本 。

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

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

branch1是可选的,如果没有提供branch1,则默认将考虑当前分支(您所在的分支)。 例如:

 git diff master -- controller/index.js 

只是更多的信息给JasonSmith的答案 :

我用这个命令检查了我的分支:

$ git clone -b branchName http://repository_url

但是,build议git diff命令失败:

 $ git diff --name-status master..branchName fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' 

我调查了这个线程之后的分支:

 $ git branch * branchName $ git branch -a * branchName remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/branchName 

我本地没有分支master ,所以我用remotes/origin/master来进行比较:

 $ git diff --name-status remotes/origin/master..push . . . . . . . . . 

remotes/origin/master 主线更多信息在这个线程 。

这里有很多答案,但是我想添加一些我常用的东西。 如果你是在你想比较的分支之一,我通常会做以下其中一个。 为了这个答案,我们会说我们在我们的二级分支。 这取决于你当时需要什么样的视angular取决于你select哪一个,但是大多数时候我正在使用二者中的第二个选项。 如果您尝试恢复原始副本,第一个选项可能会很方便 – 无论哪种方式,都可以完成任务!

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

 git diff ..master 

要么

这也将比较主人和我们所在的分支(这是次要的),原来的代码将是旧的线,新的代码将是新的线

 git diff master.. 

有两个分支让我们说

  • A(你正在工作的部门)
  • B(你想要比较的另一个分支)

在分支A你可以input

 git diff --color B 

那么这会给你一个输出

在这里输入图像说明

关于这一点的重要一点是

  1. 绿色的文本出现在分支A中

  2. 分部B中出现红色文字

你也可以使用例如TortoiseGit轻松比较分支的变化文件。 只需点击Browse References并select你想要比较的分支。

例如,如果您将您的分支主数据进行比较,那么您将获得将在主数据库中进行更改的文件列表,如果您决定将分支合并到主数据库中

如果你把masteryour-branch以及你的分支master比较,你会发现你会得到不同的结果。