小编典典

如何仅取消存储某些文件?

all

我隐藏了我的更改。现在我只想从存储中取出一些文件。我怎样才能做到这一点?


阅读 89

收藏
2022-03-13

共1个答案

小编典典

如下所述,以及“[如何从 git stash中提取单个文件(或对文件的更改)?
”中的详细说明,您可以应用使用git checkoutgit show恢复特定文件。

git checkout stash@{0} -- <filename>

使用 Git 2.23+(2019 年 8 月),使用git restore替换令人困惑的git checkout命令:

git restore --source='stash@{0}' -- <filename>

这确实会 覆盖
filename:确保您没有进行本地修改,或者您可能想要合并隐藏的文件。

(正如JaimeM.所评论的,对于像 tcsh
这样需要转义特殊字符的某些 shell,语法为:)git checkout 'stash@{0}' -- <filename>

或将其保存在另一个文件名下:

git show stash@{0}:<full filename>  >  <newfile>

(请注意,这里<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


正如评论:“unstash”(git stash pop),然后:

  • 将要保留的内容添加到索引 ( git add)
  • 把剩下的藏起来:git stash --keep-index
2022-03-13