Показать сообщение, а также diff с git stash show

Используя инструмент командной строки git-stash, как я могу просмотреть как сообщение тайника, так и разницу для данного тайника?

В документации для git stash упоминается, что вы можете настроить способ показано, но в нем не упоминаются сообщения нигде, кроме как создать тайник.


person Andrew Grimm    schedule 27.09.2015    source источник
comment
Вы имеете в виду сообщение, которое появляется при запуске git stash list?   -  person Chris    schedule 28.09.2015
comment
@ Крис, да, это то, что я имею в виду.   -  person Andrew Grimm    schedule 28.09.2015
comment
@ Downvoter Я RTFM. Чего еще вы ожидаете от меня?   -  person Andrew Grimm    schedule 28.09.2015


Ответы (2)


Тайник хранится как обычный коммит, поэтому вы можете использовать обычные команды Git для его отображения, например:

git show stash@{1}

чтобы показать сообщение и diff для stash@{1}. Поскольку тайники хранятся как коммиты с двумя родителями (один для индекса, а другой для HEAD на момент создания тайника), приведенная выше команда покажет комбинированный diff.

Очевидно, как уже указывали другие, git stash list -p или git list с stash.showPatch=true (новое в 2.7.0) также показывают сообщение diff + для всех тайников.

person Matthieu Moy    schedule 16.02.2016
comment
Я получаю ++ и -- в разнице, а не + и -. Это нормально? - person Andrew Grimm; 20.02.2016
comment
Фиксированные коммиты хранятся с двумя родителями, запуски git diff show сообщают о сравнении между спрятанным состоянием рабочего дерева и спрятанным состоянием индекса, а также фиксацией, которая была проверена в то время. - person jthill; 22.02.2016

Вы ищете команду типа

git stash list -p

Это показывает разницу каждого тайника вместе с сообщениями, которые вы предоставили.

Редактировать. Если вы знаете, какой номер тайника вы хотите отобразить (т. е. показывать не весь список, а один конкретный тайник), вы можете сделать

git stash list -p -n 1 --skip i

где i — номер тайника, который вы хотите показать. (это покажет stash@{i}).

Как упоминалось в руководстве, команда git stash list принимает параметры форматирования, аналогичные git log, см. манипулятор git log страница

Параметр -p гарантирует, что вся необходимая информация будет напечатана (вы можете поиграть с форматированием, как описано в справочная страница журнала git)

Параметр -n 1 гарантирует, что печатается только один тайник, см. также справочная страница журнала git

Параметр --skip i указывает git не печатать первые i тайников, следовательно, в сочетании с параметром n 1 будут показаны только stash@{i}. Опять же, см. справочную страницу git log.

person BartBog    schedule 28.09.2015
comment
Проблема в том, что он показывает все тайники, а не только один тайник. - person Andrew Grimm; 16.02.2016
comment
Действительно, добавлю как это сделать для данной заначки - person BartBog; 16.02.2016
comment
Упс, ты прав! Я думал, что это также допускает варианты. Минутку ;-) - person BartBog; 16.02.2016
comment
Этот ответ полезен, но, к сожалению, немного более многословен, чем ответ Матье. - person Andrew Grimm; 23.02.2016
comment
Я полностью согласен :-) - person BartBog; 23.02.2016
comment
Спасибо! Я искал способ посмотреть патчи/диффы для всех тайников одной командой. Потрясающий. - person wulftone; 10.11.2016