Чтобы воспроизвести это поведение, просто запустите новый репозиторий git, создайте файл, добавьте и зафиксируйте. Теперь отредактируйте этот файл еще раз (без добавления, без фиксации на этот раз) и stash. Результат должен выглядеть следующим образом:git log -1 -p stash @ {0} показывает пустой патч
$ git log [email protected]{0} --graph --decorate
* commit C (refs/stash)
|\ Merge: A C
| | WIP on master: A init
| |
| * commit B
|/ index on master: A init
|
* commit A (HEAD, master)
init
различий между A и C показывает ожидаемый результат:
$ git diff [email protected]{0}^[email protected]{0}
diff --git a/file b/file
index b1b7161..51bdcb4 100644
--- a/file
+++ b/file
@@ -1 +1,2 @@
+a new uncommited change
init
Я бы ожидать такой же вывод для команды
$ git log [email protected]{0}
но это не патч. Почему это происходит? (Это не относится к припрятать: Такое же поведение, если вы создаете историю, используя пустой не совершать, не-сл ...)
Возможно, вы поняли меня неправильно. Я не добавлял к индексу перед темпом. Таким образом, B содержит ту же версию файла, что и A. И изменения рабочей строки до того, как stash находятся внутри C. Если вы diff A..B, вы не получите никаких изменений. Если вы измените A..C, будет показано изменение рабочей последовательности (то же самое для B..C). Хотя A является первым родителем C, я бы предположил, что git log -1 -p должен показать изменение? – Henning
@ Хеннинг Это не должно, но вы правы, я сбился с пути, извините за неправильное тестирование. Я переписал свой ответ. (Обычно полностью переписывающие ответы вроде этого не принимаются, потому что несправедливо искажать существующие голоса, но никто не голосовал по этому ответу.) – hvd
Спасибо за подробное объяснение! Поэтому было бы целесообразно, чтобы git-log выбирал те же параметры diff, что и git-show. Или есть возражения? – Henning