git diff HEAD HEAD^2
显示一个+
,但 gitk 显示 2 个,如下图所示。我不知道为什么。
+ int k = 0;
+ for(; j < i; ++i){
+ for (k = 0; k < 1000; ++k){
++ if(groupids[k] ==0){
++ break;
++ }
+ if(groupids[k] == groupid[j]){
+ return 1;
答案1
这意味着提交是合并,并且该行是新行,未出现在任何原始提交中
N 列中的字符
-
表示该行出现在 fileN 中,但未出现在结果中。N+
列中的字符表示该行出现在结果中,但 fileN 没有该行(换句话说,从父级的角度来看,该行是添加的)。在上面的示例输出中,两个文件中的函数签名都发生了更改(因此
-
从 file1 和 file2 中删除了两行,加上++
表示添加的一行未出现在 file1 或 file2 中)。此外,file1 中的其他八行相同,但未出现在 file2 中(因此以 + 为前缀)。
简单来说,合并提交中行的差异前面会添加 2 个字符。如果两个提交中的行相同,则添加 2 个空格。如果行来自任一提交,则+
该提交的列中将显示 。如果行从某个提交中删除,则-
该提交的列中将显示 。如果行是新的,则为++
。您可以在上面的文档中看到示例:
- static void describe(char *arg)
-static void describe(struct commit *cmit, int last_one)
++static void describe(char *arg, int last_one)
{
+ unsigned char sha1[20];
+ struct commit *cmit;
struct commit_list *list;
static int initialized = 0;
struct commit_name *n;
上面的行static void describe(char *arg, int last_one)
与两个父提交都不同,因此原始行被标记为 ,以-
表明这些行在输出文件中不可用,然后++
用于标记更新的行