Por que o git mostra ++ e - na saída de 'git show' em um stash?

4

Por que git show usa dois símbolos + ou - (ou seja, ++ e -- ) se a coisa em que você está show 'ing é um stash? Parece assim:

diff --cc test.txt
index fe9fc5a,fe9fc5a..5b776c1
--- a/test.txt
+++ b/test.txt
@@@ -1,2 -1,2 +1,2 @@@
--Hello, world!
--Goodbye, world!
++Hello, universe!
++Goodbye, universe!

Apenas curioso ...

Para reproduzir:

$ git init 
Initialized empty Git repository in /tmp/test/.git/
$ cat > test.txt <<EOF
Hello, world!
Goodbye, world!
EOF
$ git add test.txt
$ git commit -m 'initial commit'
[master (root-commit) b6ad668] initial commit
 1 file changed, 2 insertions(+)
 create mode 100644 test.txt
$ sed -i 's/world/universe/' test.txt 
$ git stash 
Saved working directory and index state WIP on master: b6ad668 initial commit
HEAD is now at b6ad668 initial commit
$ git show stash@{0}
commit d8b13c608945ffd3c5705a1960f96616b603d134
Merge: b6ad668 58aaf4f
Author: Mitchel Humpherys <[email protected]>
Date:   Wed Jan 30 17:47:02 2013 -0800

    WIP on master: b6ad668 initial commit

diff --cc test.txt
index fe9fc5a,fe9fc5a..5b776c1
--- a/test.txt
+++ b/test.txt
@@@ -1,2 -1,2 +1,2 @@@
--Hello, world!
--Goodbye, world!
++Hello, universe!
++Goodbye, universe!
    
por mgalgs 31.01.2013 / 02:51

1 resposta

4

O programa diff pode mostrar diferenças entre mais de dois arquivos, em cujo caso várias colunas de "+" e "-" são usadas. O stash armazena as alterações no diretório de trabalho que foram testadas e as mudanças que não foram testadas. O diff resultante dá informações sobre ambos.

Veja git help diff , na seção COMBINED DIFF FORMAT. Isso explicará como cada coluna de mais e minuses mostram as diferenças entre dois arquivos diferentes. Aqui, a primeira coluna mostra a diferença entre HEAD e o diretório de trabalho no momento do stash, e a segunda coluna a diferença entre o índice e o diretório de trabalho.

Para ver a diferença, modifique seu exemplo para preparar uma das alterações antes de fazer o stash, por exemplo:

$ git init
$ # create the file
$ git commit -a -m 'initial commit'
$ # edit the first line of the file
$ git add test.txt
$ # edit the second line of the file
$ git stash
$ git stash show
- Hello, world!
- Goodbye, world!
+ Hello, universe!
 -Goodbye, world!
++Goodbye, universe!

A partir da primeira coluna, você pode ver que ambas as linhas foram alteradas desde o último commit, mas apenas "Goodbye, universe"! é alterado entre o índice e o diretório de trabalho.

    
por 04.02.2013 / 15:10

Tags