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

穿过此链接:http://linux.yyz.us/git-howto.html(移动到web.archive.org),这非常有用。

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

git diff主机。。树枝git日志主机。。树枝git短日志主机。。树枝

我想知道是否有类似于“gitstatus master…branch”的东西来只查看两个分支之间不同的文件。

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

git diff主机。。分支|grep“^diff”

我想知道我是否错过了什么。。。


当前回答

要将当前分支与主分支进行比较,请执行以下操作:

$ git diff --name-status main

要比较任意两个分支:

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

在官方文档中有更多的gitdiff选项(特别是--name status选项)。

其他回答

如果您喜欢GUI并使用Windows,这里有一个简单的方法。

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

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

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

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

git diff master -- controller/index.js

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

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

git fetch
git diff origin/master...

仅使用gitdiff-master就可以包含或不包含相关更改。

这里有很多答案,但我想补充一些我常用的答案。如果你在一个你想比较的分支中,我通常会做下面的一个。为了回答这个问题,我们将说我们在我们的二级分支。取决于你当时需要什么样的视图,这取决于你选择了哪一个,但大多数时候我使用的是二者中的第二个选项。如果您试图恢复到原始副本,第一个选项可能很方便——无论哪种方式,都可以完成任务!

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

git diff ..master

OR

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

git diff master..

还有一个选项,在这种情况下使用meld:

git difftool -d master otherbranch

这不仅可以看到文件之间的差异,还提供了指向和单击特定文件的简单方法。