合并长期未合并分支遇冲突,缺失.gitignore致构建异常求助
兄弟,我太懂这种没一开始加.gitignore的噩梦了——看着一堆垃圾文件在合并时冲突,还连累构建炸锅,简直头大!别慌,咱们一步步把这个烂摊子收拾干净:
1. 先彻底清理仓库里的垃圾文件(最关键的一步)
那些*.unwantedFileExtensions已经被Git跟踪了,这才是冲突的根源。咱们要把它们从仓库的跟踪列表里移除,但本地保留(毕竟你可能还要用这些文件):
- 运行命令移除跟踪:
# 单个文件类型 git rm --cached *.unwantedFileExtensions # 如果是目录,比如node_modules,加-r递归处理 git rm --cached -r 你的垃圾目录名/ - 立刻创建
.gitignore文件,把所有要忽略的规则加进去,比如:*.unwantedFileExtensions # 再补上其他你需要忽略的内容,比如构建产物、依赖目录 build/ dist/ node_modules/ - 提交这个修改,把规则固化下来:
git add .gitignore git commit -m "Add .gitignore and untrack unwanted files"
2. 处理branch1和master的合并冲突
现在你的branch1领先又落后master,说明两边都有独立提交。咱们用rebase来处理,比普通merge更干净:
- 先确保本地master是最新的:
git checkout master git pull - 切回branch1开始rebase:
git checkout branch1 git rebase master - 如果这时候还有冲突,只需要处理那些真正需要Git跟踪的文件(比如业务代码、配置文件),之前的垃圾文件已经被移除跟踪了,不该再出现冲突。处理完冲突后:
git add . git rebase --continue - 要是还碰到垃圾文件的冲突,说明之前的清理没彻底,重复第一步的
git rm --cached操作再继续就行。
3. 修复构建异常
构建炸锅大概率是这两个原因:
- 冲突解决时不小心污染了关键配置文件(比如留下了
<<<<<<< HEAD这种冲突标记),去检查下你的构建配置文件(比如webpack.config.js、pom.xml),把这些标记删掉,恢复正确的配置 - 本地残留了冲突产生的冗余文件,清理构建缓存试试:比如Node项目用
npm clean --force,Java项目用mvn clean,然后重新执行构建命令 - 如果是依赖问题,试试重新安装依赖:
npm install/pip install -r requirements.txt
4. 预防下次踩坑
- 新项目初始化时,第一时间加上
.gitignore,可以直接用对应语言的标准忽略规则 - 提交代码前一定要跑
git status扫一眼,确保没有不该提交的文件被Git跟踪 - 定期用
git clean -n预览可以清理的未跟踪文件,避免残留垃圾
内容的提问来源于stack exchange,提问作者Junaid S.
相关产品推荐
相关产品推荐

