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'
然后显示哪些文件在stash中(让我们选择stash 1):
git stash show 1 --name-only
//Hint: you can also write
//git stash show stash@{1} --name-only
9条答案
按热度按时间vbkedwbf1#
作为mentioned below,并在“How would I extract a single file (or changes to a file) from a git stash?”中详细说明,您可以使用
git checkout
或git show
来恢复特定文件。在Git 2.23+(2019年8月)中,使用
git restore
,它取代了confusinggit checkout
command:这会覆盖
filename
:确保你没有本地修改,或者你可能想合并stashed file instead。(As由Jaime M.评论,对于某些shell,如tcsh,你需要转义特殊字符,语法如下:
git checkout 'stash@{0}' -- <filename>
)或将其保存在另一个文件名下:
(note这里
<full filename>
是相对于项目顶层目录文件的完整路径名(想想:相对于stash@{0}
))。yucer在评论中建议:
如果要手动选择要从该文件中应用的更改:
Vivek在评论中添加:
看起来“
git checkout stash@{0} -- <filename>
“恢复了文件在执行stash时的版本--它 * 不 * 应用(仅)该文件的隐藏更改。要执行后者:
(as peterflynn注解,在某些情况下可能需要
| git apply -p1
,从传统的diff路径中删除一个(p1
)前导斜杠)评论如下:“unstash”(
git stash pop
),然后:git add
)git stash --keep-index
最后一点是什么允许您保留一些文件,同时隐藏其他文件。
它在“How to stash only one file out of multiple files that have changed”中说明。
hs1rzwqc2#
例如.要从最后一次隐藏中仅恢复./test.c文件和./include文件夹,
ldfqzlk83#
我想VonC的答案可能是你想要的,但这里有一个选择性的“git apply”方法:
bnl4lu3b4#
首先列出所有的藏匿点
↓
然后显示哪些文件在stash中(让我们选择stash 1):
↓
然后将您喜欢的文件应用于:
或整个文件夹:
它也可以在没有
--
的情况下工作,但建议使用它们。参见this文章。通常,将双连字符识别为停止选项解释的信号,并按字面意思处理所有后续参数。
ecr0jaav5#
还有一个方法:
irtuqstp6#
对于Windows用户:大括号在PowerShell中有特殊的含义。你可以用单引号括起来,也可以用反引号转义。例如:
git checkout 'stash@{0}' YourFile
如果没有它,您可能会收到一个错误:
Unknown switch 'e'
jobtbby37#
如果你使用
git stash pop
(没有冲突),它会在应用后删除stash。但是如果你git stash apply
,它将应用补丁,而不会将其从存储列表中删除。然后,您可以使用git checkout -- files...
还原不需要的更改92dk7w1h8#
例如
结果
然后弹出隐藏在特定的文件
其他相关命令
8yparm6h9#
对于Windows用户,为了避免
Unknown switch 'e'
,stash@{0}
需要包围内部引号,如下所示git restore --source='stash@{0}' -- <filename>