Git切换分支遇本地文件覆盖错误,如何忽略指定文件类型?
解决Git切换分支时本地修改文件被覆盖的问题(忽略指定文件)
嗨,我来帮你搞定这个Git分支切换的麻烦!你遇到的问题核心是那些临时文件(构建产物、日志、IDE配置)被Git跟踪了,导致切换分支时触发冲突。下面分两种方案,推荐用永久方案彻底解决,临时方案应急用:
一、永久解决方案(推荐)
既然这些文件本来就属于不需要Git跟踪的临时内容,咱们直接把它们加入忽略列表,从根源解决问题:
1. 让Git停止跟踪这些文件(保留本地文件)
执行以下命令,移除Git对这些文件的跟踪,但不会删除你本地的文件:
# 处理目录(-r表示递归) git rm --cached -r target/ out/ .idea/ .slcache/ # 处理单个文件类型 git rm --cached *.log *.iml
2. 添加到.gitignore文件
在项目根目录新建或编辑.gitignore文件,加入以下内容,让Git以后自动忽略这些文件:
# 构建输出目录 target/ out/ # 日志文件 *.log # IDE配置文件 *.iml .idea/ # 缓存目录 .slcache/
3. 暂存你的业务代码修改(不提交)
因为你不想提交当前的业务修改,用git stash把它们临时存起来:
git stash push -m "暂存本地业务代码修改"
(-m后面的备注可以自定义,方便以后识别这个stash记录)
4. 正常切换分支
现在就可以顺利切换到目标分支了:
git checkout 你的目标分支名
5. 恢复暂存的业务修改
切换分支后,如果需要把之前的业务修改恢复回来,执行:
git stash pop
(如果想保留stash记录不删除,就用git stash apply代替pop)
二、临时解决方案(仅本次切换生效)
如果你暂时不想修改.gitignore,只是想快速切换分支,可以临时删除这些临时文件(反正它们都是可以重新生成的):
1. 删除临时文件
rm -rf target/ out/ .idea/ .slcache/ rm -f *.log *.iml
2. 暂存业务修改
git stash push -m "暂存本地业务代码修改"
3. 切换分支
git checkout 你的目标分支名
4. 恢复业务修改
git stash pop
注意:临时方案只是应急,下次再修改这些临时文件时,Git还会继续跟踪它们,所以还是推荐永久方案一哦!
内容的提问来源于stack exchange,提问作者sai krishna goud
相关产品推荐
相关产品推荐

