如何只 stash 某个特定文件的改动

stash 指定文件:git stash push -- <文件路径>,可带 -m 写备注;多个文件列多个路径。恢复用 git stash pop 或 git stash show -p 查看内容。

最佳实践
Git 提交历史与版本恢复示意

用 git stash push -- <文件路径>:按 pathspec 选择要从工作区回退的改动,其他工作区改动保留;但 stash 的索引快照仍可能包含其他已暂存文件,不能据此保证整个 stash 仅含指定路径。加 -m "备注" 方便日后辨认;多个文件可以列多个路径。

用法

git stash push -- src/config.js                  # 单个文件
git stash push -m "配置调整" -- src/config.js     # 带备注
git stash push -- a.js b.js dir/                  # 多个文件/目录

配套操作

git stash list                   # 看 stash 列表(备注在这里显示)
git stash show -p stash@{0}      # 查看内容
git stash pop                    # 应用最新 stash,成功后删除条目;冲突时保留
git stash apply stash@{1}        # 应用指定 stash 但保留条目

想交互式挑选?

git stash push -p      # 逐块(hunk)选择要 stash 的改动

比按文件更细——同一个文件里也能只 stash 其中几处改动。-p 默认隐含 --keep-index,会保留已暂存内容;需要时显式评估 --no-keep-index。

常见问题(FAQ)

Q:stash 未跟踪的新文件?

加 -u:git stash push -u -- 新文件路径。未跟踪文件默认不进 stash。

Q:stash 里包含已暂存(staged)的改动吗?

包含。stash 把工作区和暂存区的相关改动一起收走;默认恢复工作区变化但不保证重建原暂存状态;--index 会尝试恢复索引,可能因冲突失败,也须检查其他原已暂存文件。

Q:路径里带特殊字符怎么办?

空格等 shell 特殊字符用引号包住:git stash push -- "src/my file.js"。引号不关闭 Git pathspec 的通配符解释;含字面 *、[ 等名称可用 git --literal-pathspecs stash push -- "路径"。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台