git diff HEAD HEAD^2
mostra um único +
, mas o gitk mostra 2, como na figura a seguir. Eu quero saber porque.
+ 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;
Isso significa que o commit é uma mesclagem e essa linha é uma nova linha que não aparece em nenhum dos commits originais
Simplificando, um diff de uma linha em um commit de mesclagem é precedido por 2 caracteres. Se a linha for a mesma nos dois commits, são 2 espaços. Se a linha for de qualquer um dos commits, um single
+
será mostrado na coluna desse commit. Se a linha for removida de algum commit,-
será mostrada na coluna desse commit. E se a linha é nova, então é++
. Você pode ver o exemplo no documento acima:A linha
static void describe(char *arg, int last_one)
acima é diferente de ambos os commits pai, então as linhas originais foram marcadas com-
para indicar que elas não estão disponíveis no arquivo de saída, então++
é usada para marcar a linha atualizada