Я часто откладываю работу на потом, потом появляются другие вещи, и через несколько недель я хочу осмотреть тайник и выяснить, какие изменения он внесет, если применить его к рабочему дереву в его текущем состоянии.
Я знаю, что могу сделать git diff для тайника, но это показывает мне все различия между рабочим деревом и тайником, тогда как мне просто интересно знать, что изменится применяемый тайник.
Как я могу это сделать?
git stash show -p stash@{1} >~/.diff && vim ~/.diff
(не обязательно должен бытьvim
. любой текстовый редактор, если ваш текстовый редактор имеет поддержку подсветки синтаксиса дляdiff
вывода).Ответы:
git stash show
покажет вам файлы, которые изменились в вашем последнем тайнике. Вы можете добавить-p
опцию, чтобы показать разницу.Если интересующий вас тайник не самый последний, добавьте его имя в конец команды:
источник
fatal: unable to create temp-file: Invalid argument
- есть идеи почему?git stash show -p stash@{0}
для просмотра конкретного тайника. 0 показывает последний тон, 1 второй последний .. и т. Д.git stash list
Покажет все доступные.git stash show -p 'stash@{0}'
)git stash show -p stash@{0}> stash.txt
Чтобы просмотреть текущий список тайников:
Вы увидите список вроде этого:
Для просмотра различий на любом из этих тайников:
источник
Я фанат
gitk
графического пользовательского интерфейса для визуализации git-репозиториев. Вы можете просмотреть последний сохраненный элемент:Вы также можете использовать просмотр любых ваших скрытых изменений (как указано в
git stash list
). Например:На скриншоте ниже вы можете увидеть тайник как коммит в верхнем левом углу, когда и откуда он появился в истории коммитов, список файлов, измененных в правом нижнем углу, и построчный diff в нижнем -оставил. Все, пока тайник все еще спрятан.
источник
stash@{X}
значений в командной строке, чтобы увидеть больше результатов одновременно, но я не нашел простого способа просто сказать «показать все записи тайника» в gitk.gitk stash
Кажется, это будет сокращением дляgitk stash@{0}
gitk `git stash list --pretty=format:%gd`
а затем выполните поиск «WIP on», чтобы перейти к следующему тайнику.gitk --reflog
позволяет увидеть все тайники и многое другое.Чтобы просмотреть все изменения в неиспользованном тайнике:
Чтобы просмотреть изменения одного конкретного файла в неиспользованном тайнике:
источник
-p
это сокращение от--patch
. Опция исходит отgit-diff
. Если вы предпочитаете длинную форму, вы можете написатьgit stash show --patch
.Помимо рекомендации gitk в: Можно ли предварительно просмотреть содержимое тайника в git? Вы можете установить тиг и позвонить
tig stash
. Эта бесплатная / открытая консольная программа также позволяет вам выбирать, какой тайник сравниватьисточник
P
и!
ключами соответственно.gitk
относительно легко взломать его, чтобы показать все тайники .Я использую это, чтобы увидеть все мои тайники с подсветкой различий в цветах (на Fedora 21):
(Адаптировано из Git: посмотрите, что находится в тайнике без применения тайника )
источник
Когда этот вопрос был задан впервые, это, возможно, не было вариантом, но, если вы используете PyCharm, вы можете использовать
UnStash Changes
инструмент (VCS-> Git-> UnStash Changes ...). Это позволяет вам просматривать список сохраненных изменений, а также вставлять, отбрасывать, очищать или применять (в новую ветку, если необходимо):и просмотрите измененные файлы для каждого тайника:
а также различия в файле. В diff-файлах вы можете выбрать отдельные изменения, чтобы применить их из сохраненных изменений к рабочей ветви (используя шеврон, указывающий влево):
источник
Вы можете просмотреть список всех тайников с помощью следующей команды:
Самый новый тайник - первый.
Вы можете просто выбрать индекс
n
хранилища, представленный в приведенном выше списке, и использовать следующую команду для просмотра скрытой информации.По аналогии,
Вы также можете проверить diff, используя команду:
источник
да, лучший способ увидеть, что модифицируется, это сохранить в файл, например:
источник
Сначала мы можем использовать список git stash, чтобы получить все элементы stash:
Затем мы можем использовать
git stash show stash@{N}
для проверки файлов под конкретным тайникомN
. Если мы его запустим, то получим:Причиной этого может быть то, что оболочка съедает фигурные скобки, а мерзавец видит,
stash@2
а нетstash@{2}
. И чтобы это исправить, нам нужно использовать одинарные кавычки для фигурных скобок:источник
Просмотр списка сохраненных изменений
Для просмотра списка файлов, измененных в конкретном тайнике
Для просмотра конкретного файла в тайнике
источник
Показать все тайники
Только имена файлов:
Полное содержимое файла во всех тайниках:
Вы получите цветной вывод различий, который вы можете пролистать space ( вперед ) и b( назад ), и qзакрыть пейджер для текущего тайника. Если вы предпочитаете иметь его в файле, добавьте
> stashes.diff
команду.источник
В дополнение к существующим ответам, которые предлагают использовать (чтобы показать разницу от третьего до последнего тайника)
Обратите внимание, что в
git-stash
документации написано, чтоПоэтому также возможно использовать (это эквивалентно команде выше)
Что также должно избежать некоторых проблем с Powershell .
источник
Мне нравится, как
gitk
можно показать, что именно не было отслежено или находится в индексе, но по умолчанию он будет отображать эти «коммиты» тайника в середине всех других ваших коммитов в текущей ветви.Хитрость заключается в запуске Gitk следующим образом:
(Цитата приведена для того, чтобы заставить его работать в Powershell, но таким образом он должен работать и в других оболочках.)
Если вы посмотрите этот синтаксис на странице справки gitrevisions, вы найдете следующее:
Это, очевидно, переведет gitk в такой режим, что будут показаны только непосредственные родители выбранного коммита, что мне и нравится.
Если вы хотите пойти дальше и перечислить все тайники, вы можете запустить это:
(Эти одинарные кавычки внутри обратных кавычек необходимы для успокоения Bash, в противном случае он жалуется на восклицательный знак)
Если вы используете Windows и используете cmd или Powershell:
источник
Следующая команда может быть использована для извлечения различий из спрятанных изменений в любой другой стэш или коммит или ветвь или HEAD.
Давайте посмотрим, как мы можем использовать каждую из вышеупомянутых команд.
Чтобы получить разницу между самым верхним тайником @ {0} и главной веткой:
$ git diff stash @ {0} master
Отображать только имена файлов без различия изменений:
$ git diff - только для имени stash @ {0} master
Посмотрите разницу между выбранными тайниками для выбранного файла:
$ git diff stash @ {0} ^ 1 stash @ {0} -
Посмотрите разницу между последними двумя тайниками:
$ git difftool stash @ {0} stash @ {0} ^ 1
git difftool - dir-diff stash @ {0} stash @ {0} ^ 1
Резюме:
Команды, которые полезны для извлечения diff из выбранного stash git stash show, git show, git diff, git difftool.
Смотрите разницу, используя команду git stash show,
git stash show -p stash @ {0}
Смотрите изменения в тайнике с помощью команды git show,
git show stash @ {1}
Посмотрите разницу между последним тайником и выбранным коммитом, используя команду git diff,
git diff stash @ {0}
Ссылки:
https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/
https://git-scm.com/docs/git-show
https://git-scm.com/docs/git-stash
источник