gitk差异面板中`@@ -6,7 +6,6 @@`标识的具体含义是什么?
@@ -a,b +c,d @@标识的实际含义 这个是Git采用的**统一差异格式(Unified Diff Format)**里的差异区块头部,用来定位当前展示的差异片段在修改前后两个版本文件中的位置,各部分含义如下:
- 以
-开头的a,b对应修改前的旧版本文件:a:当前差异片段(包含上下文行)在旧文件中的起始行号b:当前差异片段在旧文件中占据的总行数
- 以
+开头的c,d对应修改后的新版本文件:c:当前差异片段(包含上下文行)在新文件中的起始行号d:当前差异片段在新文件中占据的总行数
和lines of context的关联逻辑
lines of context是差异展示时,为了更容易理解修改场景,额外展示的「修改行前后未被改动的行数」。
当你调整这个设置时,每个差异区块包含的总行数、起始位置都会跟着变化,对应的a,b和c,d数值自然也会更新。
举个简单例子:假设修改行为旧文件第15行,你把上下文行数从3改成0:
- 上下文为3时,差异区块会包含旧文件第12-18行,对应
-12,7的参数 - 上下文为0时,差异区块只会包含被修改的第15行,对应
-15,1的参数
几个常见特殊值说明:
- 如果是新增的文件,旧文件的对应位置会显示为
-0,0 - 如果是删除的文件,新文件的对应位置会显示为
+0,0 - 如果差异片段在对应文件只占1行,部分diff工具会省略后面的数字,比如
@@ -15 +15 @@实际就是@@ -15,1 +15,1 @@的简写
内容的提问来源于stack exchange,提问作者renjianqiang
相关产品推荐
相关产品推荐

