git stash排除指定文件

缘起

在开发过程中,经常会使用 git stash 命令来暂存变动。然而,该命令只能暂存所有的变动,而不能排除指定的文件。这导致在开发过程中可能会遇到以下场景:

有时我们需要修改某些配置文件,例如 bootstrap.yml 中的 register-enabled: false,用于禁止将自己的服务注册到 Nacos,以防止其他开发人员调用我们本地启动的服务。但这些修改并不打算提交,只是在本地开发时使用。
然而,使用 git stash 命令时,每次都会将 bootstrap.yml 文件一同暂存。这样一来,如果不小心启动了服务,就会把自己的本地服务注册到 Nacos,从而导致其他人在联调时出现问题。

解决办法

在查阅了 git stash 的帮助文档后,发现没有提供排除指定文件不暂存的选项。因此,我思考了一个比较巧妙的解决办法,即编写一个脚本来处理这种情况。具体思路如下:

  1. 拷贝bootstrap.yml到临时位置
  2. 还原bootstrap.yml文件
  3. git stash 暂存当前变动
  4. 从临时位置把bootstrap.yml在移动回来

脚本如下

可以把该脚本配置到环境变量path下,这样可以在任意位置执行

chcp 65001
@echo off
if "%1"=="" (
echo "请输入日志" 
goto end
)

echo 当前盘符和路径:%cd%
echo 拷贝%cd%\bootstrap.yml到d:\
copy /Y  %cd%\bootstrap.yml d:\
echo 还原bootstrap.yml
git checkout -- bootstrap.yml
echo stash 保存
git stash -u -m %1
echo 移动d:\bootstrap.yml到%cd%\bootstrap.yml
move /Y  d:\bootstrap.yml %cd%\
:end

以此类推,可以指定多个文件或文件夹等,请自行编写脚本

有疑问可以加v: ashinstronger

你可能感兴趣的:(git,stash,排除指定文件)