Можно ли просмотреть содержимое прошивки в git?
Я часто увольняю работу на потом, затем приходит другое дело, и через несколько недель я хочу проверить тайник и узнать, какие изменения он внесет, если я применил его к рабочему дереву в его текущем состоянии.
Я знаю, что я могу выполнить git diff в stash, но это показывает мне все различия между рабочим деревом и stash, тогда как мне просто интересно узнать, что будет применяться приложению.
Как я могу это сделать?
Ответы
Ответ 1
git stash show
покажет вам файлы, которые были изменены в последнем своде. Вы можете добавить параметр -p
, чтобы показать diff.
git stash show -p
Если интересующий вас кошелек не самый последний, добавьте имя кошелька в конец команды:
git stash show -p [email protected]{2}
Ответ 2
Чтобы просмотреть текущий список тайников:
git stash list
Вы увидите такой список:
[email protected]{0}: WIP on ...
[email protected]{1}: ...
[email protected]{2}: ...
...
Для просмотра различий на любом из этих тайников:
git stash show -p [email protected]{n}
Ответ 3
Я поклонник графического интерфейса gitk
, чтобы визуализировать репозитории git. Вы можете просмотреть последний элемент с помощью:
gitk stash
Вы также можете использовать просмотр любых ваших спрятанных изменений (как указано в git stash list
). Например:
gitk [email protected]{2}
В приведенном ниже скриншоте вы можете увидеть stash как фиксацию в верхнем левом углу, когда и откуда она появилась в истории фиксации, список файлов, измененных в правом нижнем углу, и линейный разброс в нижнем левом углу. Все, пока тайник все еще спрятан.
Ответ 4
Чтобы просмотреть все изменения в незаполненном тире:
git stash show -p [email protected]{0}
Чтобы просмотреть изменения одного конкретного файла в неподтвержденном тире:
git diff HEAD [email protected]{0} -- path/to/filename.php
Ответ 5
Просто применив stash с помощью git stash apply
? Это не удаляет stash, поэтому вы можете reset работать дерево без потери спрятанной работы, если вам не нравятся изменения. И если вам они нравятся, вы можете просто удалить трюк с помощью git stash drop
.
Ответ 6
Помимо рекомендации gitk в Возможно ли просмотреть предварительный просмотр содержимого в git?, вы можете установить tig и вызовите tig stash
. Эта бесплатная/открытая консольная программа также позволяет вам выбрать, какой штрих сравнить
Ответ 7
Я использую это, чтобы увидеть все мои штампы с подсветкой цвета (в Fedora 21):
git stash list |
awk -F: '{ print "\n\n\n\n"; print $0; print "\n\n";
system("git -c color.ui=always stash show -p " $1); }' |
less -R
(Адаптировано из Git: посмотрите, что находится в тире без применения кошелька)
Ответ 8
Вы можете просмотреть список всех штампов с помощью следующей команды:
$ git stash list
[email protected]{0}: WIP on dev: ddd4d75 spelling fix
[email protected]{1}: WIP on dev: 40e65a8 setting width for messages
......
......
......
[email protected]{12}: WIP on dev: 264fdab added token based auth
Самый новый штамп - первый.
Вы можете просто выбрать индекс n
для stash, указанный в приведенном выше списке, и использовать следующую команду для просмотра скрытых данных
git stash show -p [email protected]{3}
Аналогично,
git stash show -p [email protected]{n}
Вы также можете проверить diff с помощью команды:
git diff HEAD [email protected]{n} -- /path/to/file
Ответ 9
Сначала мы можем использовать список git stash для получения всех элементов stash:
$git stash list
[email protected]{0}: WIP on ...
[email protected]{1}: WIP on ....
[email protected]{2}: WIP on ...
Затем мы можем использовать git stash show [email protected]{N}
для проверки файлов под определенным типом N
. Если мы его запустим, мы получим:
$ git stash show [email protected]{2}
fatal: ambiguous argument '[email protected]': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Причиной этого может быть то, что оболочка ест фигурные скобки и git видит [email protected]
, а не [email protected]{2}
. И чтобы исправить это, нам нужно использовать одинарные кавычки для фигурных скобок как:
git stash show [email protected]'{2'}
com/java/myproject/my-xml-impl.xml | 16 ++++++++--------
com/java/myproject/MyJavaClass.java | 16 ++++++++--------
etc.
Ответ 10
да, лучший способ увидеть, что модифицируется, это сохранить в файл, например:
git stash show -p [email protected]{0} > stash.txt
Ответ 11
Когда этот вопрос был задан впервые, это, возможно, не было вариантом, но, если вы используете PyCharm, вы можете использовать инструмент UnStash Changes
(VCS-> Git-> UnStash Changes...). Это позволяет вам просматривать список сохраненных изменений, а также вставлять, отбрасывать, очищать или применять (в новую ветку, если необходимо):
и просмотрите измененные файлы для каждого тайника:
а также различия в файле. В diff файлах вы можете выбрать отдельные изменения, чтобы применить их к сохраненным изменениям в рабочей ветки (используя шеврон влево):
Ответ 12
Показать все штампы
Только имена файлов:
for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show $i; done
Полное содержимое файла во всех файлах:
for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show -p $i; done
Вы получите цветной diff-вывод, который вы можете разместить с помощью space (вперед) и b (назад) и q, чтобы закрыть пейджер для текущего тайника. Если вы предпочитаете его в файле, добавьте > stashes.diff
в команду.
Ответ 13
Просмотр списка сохраненных изменений
git stash list
Для просмотра списка файлов, измененных в конкретном тайнике
git stash show -p [email protected]{0} --name-only
Для просмотра конкретного файла в тайнике
git show [email protected]{0} path/to/file
Ответ 14
В дополнение к существующим ответам, которые предлагают использовать (чтобы показать разницу от третьего до последнего тайника)
git stash show -p [email protected]{2}
Обратите внимание, что в документации git-stash
написано, что
На stashes также можно ссылаться, указав только индекс stash (например, целое число n
эквивалентно [email protected]{n}
).
Поэтому его также можно использовать (это эквивалентно команде выше)
git stash show -p 2
Что также должно избежать некоторых проблем с Powershell.
Ответ 15
Мне нравится, как gitk
может показать вам, что именно не было отслежено или находится в индексе, но по умолчанию он будет отображать эти "коммиты" stashа в середине всех других ваших коммитов в текущей ветки.
Хитрость в том, чтобы запустить gitk следующим образом:
gitk "[email protected]{0}^!"
(Цитата приведена для того, чтобы заставить его работать в Powershell, но таким образом он должен работать и в других оболочках.)
Если вы посмотрите этот синтаксис на странице справки gitrevisions, вы найдете следующее:
Запись r1^!
включает коммит r1, но исключает всех его родителей. Само по себе это обозначение обозначает единственный коммит r1.
Это, очевидно, переведет gitk в такой режим, что будут показаны только непосредственные родители выбранного коммита, и это именно то, что мне нравится.
Если вы хотите пойти дальше и перечислить все stashи, вы можете запустить это:
gitk 'git stash list '--pretty=format:%gd^!''
(Эти одинарные кавычки внутри обратных кавычек необходимы для успокоения Bash, в противном случае он жалуется на восклицательный знак)
Если вы используете Windows и используете cmd или Powershell:
gitk "--argscmd=git stash list --pretty=format:%gd^!"
Ответ 16
Следующая команда может быть использована для извлечения различий из сохраненных изменений, а также для любого другого хранилища, фиксации, ветвления или HEAD.
git stash show
git show
git diff
git difftool
Давайте посмотрим, как мы можем использовать каждую из вышеупомянутых команд.
- git stash show
Простая команда git stash show дает очень краткое резюме изменений файла, но не будет отображать разницу изменений с текущим заголовком.
- мерзавец
Команда git-show используется для просмотра объектов различных типов.
Команда git-show используется не только для визуализации изменений в stashе, но и для также используется, чтобы увидеть один или несколько объектов, таких как капли, деревья, теги и совершает.
- git diff
Команда git-diff также является одной из общих команд, которая используется для показать изменения между коммитами, коммитом и рабочим деревом и т.д.
По умолчанию, git diff покажет разность выбранного stashа в отношении (измененных файлов) текущего состояния хранилища, если нет других stashов указана ссылка или коммит.
Чтобы получить разницу между самым верхним stashом @{0} и главной веткой:
$ git diff stash @{0} master
Отображать только имена файлов без изменений:
$ git diff - только для имени stash @{0} master
Смотрите разницу между выбранными stashами для выбранного файла:
$ git diff stash @{0} ^ 1 stash @{0} -
- мерзавец difftool
Команда git-difftool также может использоваться для поиска различий между выбранный stash и выбранный коммит или ветвь или stash
Посмотрите разницу между последними двумя stashами:
$ 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}
Смотрите изменения в stashе с помощью команды git show,
git show stash @{1}
Посмотрите разницу между последним stashом и выбранным коммитом с помощью команды 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