Git本地分支如何忽略database.yml修改且切换分支不丢失变更?
解决本地保留Git文件修改且不提交的方案
针对你需要在本地修改config/database.yml添加数据库账号密码、不提交不推送、可切换分支的需求,以下是几个可靠的解决办法:
方案一:让Git忽略文件的本地修改(assume-unchanged)
这个命令会告诉Git"假装该文件未被修改",停止追踪其本地变更,适合文件在远程仓库不会频繁修改的场景:
- 完成
config/database.yml的修改后,执行命令:git update-index --assume-unchanged config/database.yml - 之后Git不会再显示该文件的修改状态,切换分支时,只要目标分支的
config/database.yml和你修改前的版本一致,本地修改会直接保留;如果目标分支的该文件有更新,Git会提示冲突,此时可先取消忽略:
处理完差异后再重新执行忽略命令。git update-index --no-assume-unchanged config/database.yml
方案二:本地专属忽略文件(.git/info/exclude)
和.gitignore功能类似,但这个文件无需提交到远程,仅在当前本地仓库生效:
- 打开仓库根目录下的
.git/info/exclude文件(没有则直接创建) - 添加一行内容:
config/database.yml - 保存后,Git会彻底忽略该文件的所有本地修改,切换分支的逻辑和方案一一致。
方案三:正确使用Stash临时保存修改
你之前用git stash后变更丢失,大概率是因为pull后未恢复stash内容,正确操作流程如下:
- 修改完文件后,执行命令保存修改:
git stash push -m "added db username and password" - 执行
git pull拉取远程更新 - 恢复之前保存的修改:
如果拉取的更新和你的修改有冲突,Git会自动提示,解决冲突即可。若只是临时在其他分支使用该修改,也可以用git stash popgit stash apply,用完后记得用git stash drop清理对应的stash记录。
内容的提问来源于stack exchange,提问作者Ajit Dhanje
相关产品推荐
相关产品推荐

