我藏我的变化。 现在我想unstash只能从藏匿一些文件。 我怎样才能做到这一点?
Answer 1:
正如下面提到的 ,并在详细的“ 我怎么会提取一个混帐藏匿单个文件(或对文件的更改)? ”,你可以申请使用git checkout
或git show
还原特定文件。
git checkout stash@{0} -- <filename>
但这覆盖 filename
:请确保您没有本地修改,或者你可能要合并的藏匿文件代替 。
(作为评论由海梅M. ,对于某些壳例如tcsh在需要躲避特殊字符,语法是: git checkout 'stash@{0}' -- <filename>
)
或将其保存在另一个文件名:
git show stash@{0}:<full filename> > <newfile>
(注意,这里
<full filename>
是相对于项目的顶级目录中的文件的全路径名(认为:相对于stash@{0}
yucer建议在评论 :
如果你想改变它,你想从该文件适用于手动选择:
git difftool stash@{0}..HEAD -- <filename>
维韦克增加在评论 :
貌似“
git checkout stash@{0} -- <filename>
”还原时进行藏匿在该文件的时间版本-它不适用(只),该文件的藏匿变化。
要做到后者:
git diff stash@{0}^1 stash@{0} -- <filename> | git apply
(如评论由peterflynn ,您可能需要| git apply -p1
在某些情况下,删除一个( p1
)从传统的diff路径斜线)
至于说: “unstash”( git stash pop
),则:
- 添加要守到指数(什么
git add
) - 藏匿的其余部分:
git stash --keep-index
最后一点是什么让你保持一些文件,而积攒他人。
它在“说明如何藏匿只有一个文件出来已经改变了多个文件 ”。
Answer 2:
git checkout stash@{N} <File(s)/Folder(s) path>
例如。 从去年藏匿只恢复./test.c文件和文件夹./include,
git checkout stash@{0} ./test.c ./include
Answer 3:
我认为VonC的答案可能是你想要的,但这里有一个方式做一个选择“混帐应用”:
git show stash@{0}:MyFile.txt > MyFile.txt
Answer 4:
首先列出所有的藏匿处
git stash list
↓
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'
然后显示哪些文件是在藏匿(让挑藏匿1):
git stash show 1 --name-only
//Hint: you can also write
//git stash show stash@{1} --name-only
↓
ajax/product.php
ajax/productPrice.php
errors/Company/js/offlineMain.phtml
errors/Company/mage.php
errors/Company/page.phtml
js/konfigurator/konfigurator.js
然后运用你喜欢的文件:
git checkout stash@{1} -- <filename>
或整个文件夹:
git checkout stash@{1} /errors
它也没有--
但建议使用它们。 见这个职位。
这也是传统的认识到一个双连字符作为一个信号,停止选项的解释和字面上把后面的所有参数。
Answer 5:
如果你git stash pop
(无冲突)应用后,它会删除藏匿。 但是,如果你git stash apply
它将应用补丁,而不从藏匿列表中删除。 然后你就可以恢复与不必要的更改git checkout -- files...
Answer 6:
还有一个方法:
git diff stash@{N}^! -- path/to/file1 path/to/file2 | git apply -R
Answer 7:
对于Windows用户:花括号在PowerShell中的特殊含义。 您可以用单引号包围或反引号逃脱。 例如:
git checkout 'stash@{0}' YourFile
没有它,你可能会收到错误:
Unknown switch 'e'