4

Почему git show использует два символа + или - (т.е. ++ и --), если то, что вы show , является тайником? Это выглядит так:

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!

Просто любопытно...


Воспроизвести:

$ 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 <mitchelh@codeaurora.org>
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!

1 ответ1

4

Программа diff может показать различия между более чем двумя файлами, и в этом случае используются несколько столбцов «+» и «-». В хранилище хранятся как изменения в рабочем каталоге, которые были подготовлены, так и изменения, которые не были подготовлены. Результирующий дифференциал дает вам информацию об обоих.

См. git help diff , в разделе ФОРМАТ КОМБИНИРОВАНИЯ DIFF. Он объяснит, как каждый столбец плюсов и минусов показывает различия между двумя разными файлами. Здесь первый столбец показывает разницу между HEAD и рабочим каталогом во время тайника, а второй столбец - разницу между индексом и рабочим каталогом.

Чтобы увидеть разницу, измените ваш пример, чтобы выполнить одно из изменений, прежде чем делать тайник, например:

$ 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!

Из первого столбца видно, что обе строки изменились со времени последнего коммита, но только «До свидания, вселенная»! изменяется между индексом и рабочим каталогом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .