如何仅固定某些文件?

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


如下所述,并且在“如何从git存储中提取单个文件(或更改为文件)?”中详细介绍,您可以应用使用git checkoutgit show来恢复特定文件。

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

(正如Jaime M.所述,对于像tcsh这样的需要转义特殊字符的shell,语法是: git checkout 'stash@{0}' -- <filename>

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

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

(请注意,这里<full filename>是文件相对于项目顶部目录的完整路径名(想想:相对于stash@{0} ))。

yucer在评论中建议:

如果您想手动选择要从该文件应用哪些更改:

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 ,从传统diff路径中删除一个( 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的答案可能是你想要的,但是这里有一种方法来做一个选择性的“git apply”:

    git show stash@{0}:MyFile.txt > MyFile.txt
    
    链接地址: http://www.djcxy.com/p/24499.html

    上一篇: How to unstash only certain files?

    下一篇: Stash only some of the currently modified files