Git stash后如何选择性恢复部分修改内容?
在开发新功能时用git stash暂存了所有改动,现在想恢复某个文件的修改但不想影响其他文件。之前试过git stash apply但发现所有改动都被恢复了,有没有办法只恢复特定文件的修改?
比如我修改了三个文件,但只想恢复src/components/MyComponent.js的改动。尝试过git checkout stash@{0} -- src/components/MyComponent.js但提示”error: pathspec ‘stash@{0}’ did not match any file(s) known to git”。
另外发现 stash 列表里有多个条目,怎么确认要操作的是最新的那个 stash?用git stash list看到的ID是不是可以直接用在命令里?
git checkout stash@{0} -- src/components/MyComponent.js这个命令思路是对的,但写法有点小问题。正确的方式是:或者用更传统的写法:
注意路径和 stash 的引用格式要严格匹配,中间不能加空格之类的。
关于确认最新的 stash,直接用
stash@{0}就是最新的那次暂存。如果想指定某个特定的 stash,比如stash@{2}或者具体的 stash 名称(从git stash list里看到的),也完全可以用在命令里替换掉stash@{0}。如果还是报错,检查下文件路径是不是拼写错了,或者这个文件在 stash 时根本没被修改过。这种时候可以先用
git stash show -p看看具体的改动内容,确认一下你要恢复的文件到底有没有在 stash 里。