如何在Git Rebase时自动忽略编译构建文件夹及相关生成文件?
解决Laravel分支Rebase时自动生成文件的冲突问题
嘿,我太懂这种被一堆自动构建文件的冲突搞崩溃的感觉了!这些public/js、css、composer.lock还有mix-manifest.json都是工具自动生成的,完全没必要手动去解决它们的冲突,咱们直接用下面的方案搞定:
方案一:彻底移除这些文件的Git追踪(最推荐)
这些文件属于构建产物/依赖锁文件,本质上不应该被提交到Git仓库里——它们应该在部署或开发时通过命令重新生成,而不是跟着代码版本走。这么做一劳永逸,以后再也不会出现这类冲突:
- 先把当前ws分支的未提交修改暂存起来(如果有的话):
git stash - 打开项目根目录的
.gitignore文件,添加以下内容,告诉Git忽略这些自动生成的文件:public/js/ public/css/ composer.lock public/mix-manifest.json - 把这些文件从Git仓库中移除(本地文件会保留,只是不再被Git追踪):
git rm -r --cached public/js public/css composer.lock public/mix-manifest.json - 提交这个.gitignore的修改:
git commit -m "忽略自动生成的构建产物与依赖锁文件" - 现在重新执行rebase,这时候就不会有那些烦人的冲突了:
git rebase master - Rebase完成后,重新生成这些文件:
composer install npm run prod # 开发环境可以用npm run dev
方案二:临时丢弃ws分支的自动文件修改(适合必须追踪这些文件的场景)
如果因为项目特殊要求,必须把这些文件留在Git仓库里,那咱们可以直接在rebase时用master分支的版本覆盖ws分支的,之后重新构建:
- 当rebase出现冲突时,执行以下命令,直接取master分支上这些文件的版本:
git checkout master -- public/js public/css composer.lock public/mix-manifest.json - 标记这些文件为冲突已解决:
git add public/js public/css composer.lock public/mix-manifest.json - 继续rebase流程:
git rebase --continue - 如果还有其他非自动文件的冲突,手动解决后重复步骤2-3;完成rebase后,重新生成最新的构建文件:
composer install npm run prod
为什么会出现这些冲突?
简单来说:master和ws分支各自都执行过composer install或前端构建命令,导致这些自动生成的文件内容出现差异。因为这些文件不是人工编写的代码,所以它们的冲突完全没有手动解决的价值——直接重新生成就好。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

