gitk 中的双加号是什么?

gitk 中的双加号是什么?

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 中(因此以 + 为前缀)。

https://git-scm.com/docs/git-diff#_combined_diff_format

简单来说,合并提交中行的差异前面会添加 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)与两个父提交都不同,因此原始行被标记为 ,以-表明这些行在输出文件中不可用,然后++用于标记更新的行

相关内容