6 ответов:
как указанных ниже, и подробно изложенных в "как я могу извлечь один файл (или изменения в файл) из тайника git?", вы можете применять использовать
git checkoutилиgit showдля восстановления определенного файла.git checkout stash@{0} -- <filename>(как прокомментировал by Джейме М., для некоторых оболочек, таких как tcsh, где вам нужно избежать специальных символов, синтаксис будет следующим:
git checkout 'stash@{0}' -- <filename>)или чтобы сохранить его под другим именем:
git show stash@{0}:<full filename> > <newfile>(обратите внимание, что здесь
<full filename>- полный путь к файлу относительно корневой директории проекта (думаю: относительноstash@{0})).yucer предполагает в комментариях:
если вы хотите выбрать вручную, какие изменения вы хотите применить из этого файла:
git difftool stash@{0}..HEAD -- <filename>Вивек добавляет in комментарии:
выглядит как "
git checkout stash@{0} -- <filename>" восстанавливает версию файла на момент выполнения тайника-это делает не применить (просто) спрятанные изменения для этого файла.
Чтобы сделать последнее:git diff stash@{0}^1 stash@{0} -- <filename> | git apply(как прокомментировал by peterflynn вам понадобится
| git apply -p1в некоторых случаях удаление одного (p1) ведущий Слэш от традиционного diff пути)
как прокомментировал: "unstash" (
git stash pop), то:
- добавить то, что вы хотите сохранить в индекс (
git add)- притон остаток:
git stash --keep-indexпоследний пункт-это то, что позволяет вам хранить некоторые файлы, сохраняя другие.
Это проиллюстрировано в "как спрятать только один файл из нескольких файлов, которые изменились".
git checkout stash@{N} <File(s)/Folder(s) path>например. Только для восстановления ./испытание.файл с и ./ включить папку из последнего тайника,
git checkout stash@{0} ./test.c ./include
Я думаю, что ответ VonC, вероятно, то, что вы хотите, но вот способ сделать выборочный "git apply":
git show stash@{0}:MyFile.txt > MyFile.txt
Если вы
git stash pop(без конфликтов) он удалит тайник после его применения. Но если выgit stash applyон будет применять патч, не удаляя его из списка заначку. Затем вы можете отменить нежелательные изменения сgit checkout -- files...
сначала перечислите все тайники
git stash list↓
stash@{0}: WIP on Produktkonfigurator: 132c06a5 Cursor bei glyphicon plus und close zu zeigende Hand ändern stash@{1}: WIP on Produktkonfigurator: 132c06a5 Cursor bei glyphicon plus und close zu zeigende Hand ändern stash@{2}: WIP on master: 7e450c81 Merge branch 'Offlineseite'затем покажите, какие файлы находятся в тайнике:
git stash show stash@{1} --name-only↓
ajax/product.php ajax/productPrice.php errors/Company/js/offlineMain.phtml errors/Company/mage.php errors/Company/page.phtml js/konfigurator/konfigurator.jsзатем примените файл, который вам нравится:
git checkout stash@{1} -- <filename>или всю папку:
git checkout stash@{1} /errors
он также работает без
--но рекомендуется использовать их. Смотрите этой пост.также принято распознавать двойной дефис как сигнал к остановить интерпретацию параметров и обработать все следующие аргументы буквально.
Comments