如何让git diff在两个提交间生成简洁的对比输出?
Git Diff 提交对比的格式困惑与解决方案需求
我查阅了许多关于git diff对比两个提交的说明,但仍对当前输出感到困惑。我认为自己得到的是所谓默认的「combined格式」,但不清楚还有哪些可用格式。
使用的命令
git diff af738ab0..bbbec26d > gitdiff_2025-04-09B.diff
输出异常细节
我得到的输出类似如下:
... +diff --git a/src/core/history_table_view.py b/src/core/history_table_view.py +index 5b18236..05b262a 100644 +--- a/src/core/history_table_view.py ++++ b/src/core/history_table_view.py +@@ -14,188 +14,279 @@ class HistoryTableView(QtWidgets.QTableView): + @thread_check(True) + def __init__(self, *args): + super().__init__(*args) +- self.setObjectName('history table') +- self.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) +- self.horizontalHeader().setStretchLastSection(True) +- self.horizontalHeader().hide() +- self.verticalHeader().hide() +- self.setModel(HistoryTableModel(self)) ...
这段输出对比了两个提交中的history_table_view.py文件。上述所有行在两个版本的文件中都存在,但我有两个疑问:
- 为什么诸如
+ def __init__(self, *args):的行以单个「+」开头,而+- self.setObjectName('history table')的行以「+-」开头?这代表什么含义?我原本认为git diff不会显示这些行(尽管行之间的空行存在差异)。 - 我观看了git diff的入门视频,视频中演示者对比两个提交时,输出是简单的「+」或「-」,类似BASH的diff命令输出,这正是我想要的简洁格式。为什么演示者默认就能得到这种易懂的简洁输出,而我却得到难以理解的格式?
环境信息
我的git版本为:
git version 2.48.1.windows.1
需求
我需要:
- 清晰解释git diff对比两个提交的相关内容,包括不同格式的区别。
- 说明如何获取上述的简洁diff输出。
- 另外,能否说明为什么这个问题不值得被提出?
内容的提问来源于stack exchange,提问作者mike rodent
相关产品推荐
相关产品推荐

