Расставить инсценированный файл с одним в тайнике

Есть ли опция --staged (aka --cached) для сравнения файлов из git stash?

Здесь я сравниваю самый последний коммит с поэтапным файлом (я использую явный синтаксис @{}, но я знаю, что @{0} может быть выведен):

git diff stash@{0}:spec/blueprints.rb HEAD:spec/blueprints.rb

И здесь я сравниваю спрятанный файл с тем, что находится на диске:

git diff stash@{0}:spec/blueprints.rb spec/blueprints.rb

Как я могу сравнить то, что в настоящее время поставлено с тем, что находится в тайнике? Это не работает:

git diff --staged stash@{0}:spec/blueprints.rb spec/blueprints.rb

2 ответа

Решение

git diff --cached 'stash@{0}' -- spec/blueprints.rb

... Возможно, что кавычки не нужны, но вы никогда не знаете, как ваша оболочка может вас удивить.

:<n>:<path>, e.g. :0:README, :README

Двоеточие, за которым необязательно следует номер этапа (от 0 до 3), и двоеточие, за которым следует путь, именует объект BLOB-объекта в индексе по указанному пути. Отсутствующий номер этапа (и двоеточие, следующее за ним) именует запись этапа 0. Во время объединения стадия 1 является общим предком, стадия 2 является версией целевой ветви (обычно текущей ветвью), а стадия 3 является версией из ветви, которая объединяется.

из git help rev-parse

Другие вопросы по тегам