如何仅固定某些文件?
我藏了我的变化。 现在我想只从存储中取出一些文件。 我怎样才能做到这一点?
 如下所述 ,在“ 如何从git存储中提取单个文件(或更改为文件)? ”中,可以使用git checkout或git show来恢复特定文件。 
 git checkout stash@{0} -- <filename> 
  (就像Jaime M. 所说的,对于某些像tcsh这样的shell,你需要转义特殊字符,语法是: git checkout 'stash@{0}' -- <filename> ) 
或者将其保存在另一个文件名下:
 git show stash@{0}:<full filename> > <newfile> 
(请注意,这里
<full filename>是相对于项目顶部目录的文件的完整path名(想想:相对于stash@{0}))。
yucer 在评论中build议:
如果要手动select要从该文件应用哪些更改:
 git difftool stash@{0}..HEAD -- <filename> 
Vivek 在评论中补充道:
看起来像“
git checkout stash@{0} -- <filename>”在执行存储时恢复文件的版本 – 它不适用(仅)该文件的存储更改。
做后者:
 git diff stash@{0}^1 stash@{0} -- <filename> | git apply 
  (就像peterflynn所说的那样 ,在某些情况下,你可能需要| git apply -p1 ,从传统的diffpath中删除一个( p1 )的斜杠) 
 正如所评论的:“unsash”( git stash pop ),那么: 
-  添加你想保留的索引( git add)
-   git stash --keep-index其余的东西:git stash --keep-index
 最后一点是什么让你保留一些文件,而藏匿他人。 
 这在“ 如何从多个已经改变的文件中只存储一个文件 ”中说明。 
 git checkout stash@{N} <File(s)/Folder(s) path> 
例如。 要只从最后一个存储中恢复./test.c文件和./include文件夹,
 git checkout stash@{0} ./test.c ./include 
我认为VonC的答案可能是你想要的,但是这里有一个select性的“git apply”的方法:
 git show stash@{0}:MyFile.txt > MyFile.txt 
 如果你git stash pop (没有冲突),它将删除存储后,它被应用。 但是如果你使用git stash apply ,它将应用这个补丁而不从存储列表中删除它。 然后,你可以恢复使用git checkout -- files...的不需要的更改git checkout -- files... 
我用过这个
 git rm --cached your/path/to/file