Von*_*onC 415
正如下面提到的,并在详细的" 我怎么会提取一个混帐藏匿单个文件(或对文件的更改)? ",你可以申请使用git checkout或git show恢复特定文件.
git checkout stash@{0} -- <filename>
Run Code Online (Sandbox Code Playgroud)
(正如评论由海梅M.,对于某些壳例如tcsh,你需要逃跑的特殊字符,语法为: filename)
或者将其保存在另一个文件名下:
git show stash@{0}:<full filename> > <newfile>
Run Code Online (Sandbox Code Playgroud)
(请注意,这
git checkout 'stash@{0}' -- <filename>是相对于项目顶级目录的文件的完整路径名(想想:相对于<full filename>)).
如果要手动选择要从该文件应用的更改:
git difftool stash@{0}..HEAD -- <filename>
Run Code Online (Sandbox Code Playgroud)
貌似"
stash@{0}"恢复时进行藏匿在该文件的时间版本-它确实不适用(只),该文件的藏匿变化.
做后者:
git diff stash@{0}^1 stash@{0} -- <filename> | git apply
Run Code Online (Sandbox Code Playgroud)
(正如peterflynn所评论的那样,git checkout stash@{0} -- <filename>在某些情况下,你可能需要| git apply -p1从传统的diff路径中删除一个()前导斜杠)
如评论:"unstash"(p1),然后:
git stash pop)git add最后一点是允许您在存储其他文件时保留一些文件的原因.
它在" 如何仅存储已更改的多个文件中的一个文件 "中进行了说明.
Bal*_*n A 114
git checkout stash@{N} <File(s)/Folder(s) path>
Run Code Online (Sandbox Code Playgroud)
例如.要仅恢复上次存储的./test.c文件和./include文件夹,
git checkout stash@{0} ./test.c ./include
Run Code Online (Sandbox Code Playgroud)
Mik*_*icz 35
我认为VonC的答案可能就是你想要的,但这是一种选择性"git apply"的方法:
git show stash@{0}:MyFile.txt > MyFile.txt
Run Code Online (Sandbox Code Playgroud)
Bla*_*ack 15
首先列出所有的藏匿处
git stash list
Run Code Online (Sandbox Code Playgroud)
↓
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'
Run Code Online (Sandbox Code Playgroud)
然后显示哪些文件存在于存储中(让我们选择存储1):
git stash show 1 --name-only
//Hint: you can also write
//git stash show stash@{1} --name-only
Run Code Online (Sandbox Code Playgroud)
↓
ajax/product.php
ajax/productPrice.php
errors/Company/js/offlineMain.phtml
errors/Company/mage.php
errors/Company/page.phtml
js/konfigurator/konfigurator.js
Run Code Online (Sandbox Code Playgroud)
然后应用您喜欢的文件:
git checkout stash@{1} -- <filename>
Run Code Online (Sandbox Code Playgroud)
或整个文件夹:
git checkout stash@{1} /errors
Run Code Online (Sandbox Code Playgroud)
它也可以使用,--但建议使用它们.看这篇文章.
将双连字符识别为停止选项解释的信号并按字面意思处理所有后续参数也是常规的.
Lac*_*mov 13
还有一种方法:
git diff stash@{N}^! -- path/to/file1 path/to/file2 | git apply -R
Run Code Online (Sandbox Code Playgroud)
Ben*_*son 10
如果您git stash pop(没有冲突)它将在应用后删除存储.但是,如果你git stash apply将它应用补丁而不从存储列表中删除它.然后,您可以使用还原不需要的更改git checkout -- files...
对于 Windows 用户:大括号在 PowerShell 中具有特殊含义。您可以用单引号括起来或用反引号转义。例如:
git checkout 'stash@{0}' YourFile
没有它,您可能会收到错误消息:
Unknown switch 'e'
| 归档时间: |
|
| 查看次数: |
135571 次 |
| 最近记录: |