缘起
在开发过程中,经常会使用 git stash 命令来暂存变动。然而,该命令只能暂存所有的变动,而不能排除指定的文件。这导致在开发过程中可能会遇到以下场景:
有时我们需要修改某些配置文件,例如 bootstrap.yml 中的 register-enabled: false,用于禁止将自己的服务注册到 Nacos,以防止其他开发人员调用我们本地启动的服务。但这些修改并不打算提交,只是在本地开发时使用。
然而,使用 git stash 命令时,每次都会将 bootstrap.yml 文件一同暂存。这样一来,如果不小心启动了服务,就会把自己的本地服务注册到 Nacos,从而导致其他人在联调时出现问题。
解决办法
在查阅了 git stash 的帮助文档后,发现没有提供排除指定文件不暂存的选项。因此,我思考了一个比较巧妙的解决办法,即编写一个脚本来处理这种情况。具体思路如下:
- 拷贝bootstrap.yml到临时位置
- 还原bootstrap.yml文件
- git stash 暂存当前变动
- 从临时位置把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
以此类推,可以指定多个文件或文件夹等,请自行编写脚本
有疑问可以关注:鲁班曰