如何使用Git Stash特定文件
如何使用Git Stash特定文件
技术背景
在使用Git进行版本控制时,有时我们只希望暂存(stash)特定的文件,而不是将所有修改都暂存起来。这样可以在不影响其他文件修改的情况下,对特定文件进行隔离处理。
实现步骤
Git 2.13及以上版本
从Git 2.13开始,可以使用git stash push <path>
命令来将特定路径的文件保存到暂存区。例如:
1 |
|
其中,-m
选项用于添加暂存信息。
早期版本
- 使用
git stash --patch
(或git stash -p
):
进入交互式模式,会显示每个被修改的代码块(hunk)。使用n
跳过不想暂存的文件,使用y
暂存想要的文件,使用q
退出并保留剩余未暂存的代码块。使用a
可以暂存当前显示的代码块以及该文件中的其余代码块。 - 先添加不想暂存的更改到索引,然后使用
--keep-index
选项进行暂存:
1 |
|
最后一步git reset
是可选的,它会从索引中移除更改。
暂存单个文件
1 |
|
若要在命令中提供暂存信息,而不是在提示时输入,可以在文件部分之前添加-m
,例如:
1 |
|
暂存多个文件
1 |
|
使用VSCode扩展
如果使用Visual Studio Code,可以通过以下步骤暂存选定的文件:
- 确保在VSCode中安装了GitLens扩展。
- 转到“源代码管理”选项卡。
- 选择要暂存的文件。
- 右键单击,选择“暂存更改”。
- 输入可理解的暂存信息并按回车键。
Git 2.35.0及以上版本
可以使用--staged | -S
标志暂存已暂存的更改,例如:
1 |
|
核心代码
1 |
|
最佳实践
- 使用
git stash push <path>
命令,因为它支持文件模式匹配,例如git stash push welcome.*ml
可以暂存以welcome.
开头并以ml
结尾的任何文件。 - 在暂存之前,使用
git status
命令确保要暂存的更改确实存在。 - 为暂存添加有意义的信息,方便后续查找和管理。
常见问题
git stash --keep-index
的问题:git stash --keep-index
会将所有更改(已暂存和未暂存)都推送到暂存区,--keep-index
只是在暂存完成后保持索引不变。这可能会在后续弹出暂存时导致合并冲突。- 忘记暂存信息:可以使用
git stash list
命令查看暂存列表,找到对应的暂存索引,然后使用git stash apply stash@{<index_of_saved_stash>}
恢复暂存的文件。
如何使用Git Stash特定文件
https://119291.xyz/posts/2025-05-14.how-to-git-stash-specific-files/