有没有一种方法可以在单个命令中获取git diff和提交更改?

13

有没有一种方法可以通过单个命令获取文件差异以及它的提交ID细节?当前,“git diff tag1..tag2”给出了两个标签之间的整个代码更改,但没有提交ID和提交原因。当我使用“git log”时,它会给我完整的提交更改,其中包括我不关心的与比较两个标签相关的更改。


你能稍微澄清一下你的问题吗?你所说的“文件差异的详细信息以及其提交ID”是什么意思? - Noufal Ibrahim
当我运行git diff命令时,会给我一些类似于以下的内容: diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp index 662a1fa..64f9766 100644 --- a/opengl/libagl/egl.cpp +++ b/opengl/libagl/egl.cpp接下来是确切的代码更改(添加/减少)。但是这个更改也有一个提交ID和提交原因,我希望在同一个diff文件中看到它。所以我的想法是,如果我看到了一个更改,我也可以看到它的原因。这样的详细信息可以通过“git log”获得,但是运行“git log tag1..tag2”会给我完全不同的结果,其中包括不属于git diff的文件。 - Vinz
你想要在提交树中的两个点之间获取提交消息、提交哈希和整个差异吗? - Noufal Ibrahim
1个回答

24
但是这个变更也有一个提交ID和提交原因,我希望在同一个diff文件中得到它们。
我认为这里有一点混淆。git-diff输出的是您指定范围内一个提交和另一个提交之间的差异,这个差异不仅代表了一个提交,而是代表了一系列提交(例如您给出的示例中的 662a1fa..64f9766)。因此,它将包含多个提交ID和消息,如果您的标记相距足够远,可能甚至会有数千个。
如果git diff要输出与所有关联提交消息,则无法很好地告诉您每个提交ID和提交消息所关联的diff部分。这就是为什么git log存在的原因。
Git log按您指定的范围逐个显示每个提交,因此它将显示提交消息。
git-diff向您显示从a到z的差异。
git-log向您显示了a变成z的历程。
考虑到这一点,我猜这可能是您要找的内容: git log --color -p --full-diff tag1..tag2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接