如何在git stash -p中忽略已暂存的代码块?
解决Git stash -p默认询问已暂存代码块的问题
我完全懂你的困扰——好不容易用git add -p精细挑选暂存了部分代码块,结果跑git stash -p的时候,Git还要把那些已经确认要保留的内容再拿出来问一遍,属实有点冗余。
别担心,我们可以通过配置让git stash -p默认跳过已暂存的内容,具体方法如下:
配置全局别名(推荐)
Git本身没有直接的配置项让stash -p默认忽略暂存区,但我们可以给带特定参数的命令设置别名,一劳永逸解决问题。运行下面的命令,创建一个自定义的交互式stash命令:
git config --global alias.stash-p 'stash -p --keep-index'
之后你只需要敲git stash-p,就会自动执行带--keep-index的交互式stash,它会:
- 只扫描工作区中未暂存的变更,完全跳过你已经用
git add -p暂存的代码块 - stash完成后,你的暂存区状态保持不变,和执行命令前完全一致
原理说明
--keep-index是Git stash的一个实用选项,它的核心作用是:在 stash 工作区变更时,保留暂存区的内容不被修改。当搭配-p(交互式模式)使用时,Git会自动过滤掉已暂存的部分,只让你选择工作区里未提交的变更。
灵活使用
如果某天你确实需要处理暂存区的内容,直接用原生的git stash -p就行,这个别名不会影响原生命令的使用。要是只想给当前仓库配置这个别名,去掉命令里的--global参数即可。
内容的提问来源于stack exchange,提问作者milianw
相关产品推荐
相关产品推荐

