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

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

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

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

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

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

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

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


当前回答

Try

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

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

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

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

其他回答

对于正在寻找GUI解决方案的人来说,Git Cola有一个非常好的“Branch Diff Viewer(Diff->Branches..)”。

也可以使用视觉差异。

例如,如果您正在使用Sourcetree,您可以在日志视图中选择任意两个提交。

(在大多数情况下,我个人更喜欢使用GUI来实现这一点,我将向那些可能不熟悉GUI选项的人发布这一点。)

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

git difftool -d master otherbranch

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

您还可以使用例如TortoiseGit轻松比较已更改文件的分支。只需单击“浏览引用”并选择要比较的分支。

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

记住,如果你将master与分支进行比较,将分支与master进行比较,你会得到不同的结果。

我制作了一个管道,输出在两个分支之间修改过的所有文件名的列表。这对于管道连接到另一个程序非常有用,而不是直接将差异视为其他响应。

yes n | git difftool main..develop | grep V |sed "s#Viewing ([0-9]*/[0-9]*): ##g"

或者,如果您只想知道当前分支和另一个分支之间的差异:

yes n | git difftool develop | grep V |sed "s#Viewing ([0-9]*/[0-9]*): ##g"

gitdifftooldevelop将提示您打开difftool中的文件。我使用yes n拒绝所有内容,然后简单地用grep和sed格式化文本。