我隐藏了我的更改。现在我只想从存储中取出一些文件。我怎样才能做到这一点?
如下所述,以及“[如何从 git stash中提取单个文件(或对文件的更改)? ”中的详细说明,您可以应用使用git checkout或git show恢复特定文件。
git checkout
git show
git checkout stash@{0} -- <filename>
使用 Git 2.23+(2019 年 8 月),使用git restore替换令人困惑的git checkout命令:
git restore
git restore --source='stash@{0}' -- <filename>
这确实会 覆盖 filename:确保您没有进行本地修改,或者您可能想要合并隐藏的文件。
filename
(正如JaimeM.所评论的,对于像 tcsh 这样需要转义特殊字符的某些 shell,语法为:)git checkout 'stash@{0}' -- <filename>
git checkout 'stash@{0}' -- <filename>
或将其保存在另一个文件名下:
git show stash@{0}:<full filename> > <newfile>
(请注意,这里<full filename>是相对于项目顶层目录的文件的完整路径名(想想:相对于stash@{0}))。
<full filename>
stash@{0}
建议:
如果要手动选择要从该文件应用的更改:
git difftool stash@{0}..HEAD -- <filename>
补充:
看起来“ git checkout stash@{0} -- <filename>”恢复了执行存储时的文件版本——它不 应用 (仅)该文件的隐藏更改。 做后者:
git diff stash@{0}^1 stash@{0} -- <filename> | git apply
在某些情况下,您可能需要从传统差异路径中删除一个( ) 前导斜杠)| git apply-p1``p1
| git apply-p1``p1
正如评论:“unstash”(git stash pop),然后:
git stash pop
git add
git stash --keep-index