报错翻译:
错误 1052(23000):WHERE 子句中的列 blocked_companies 含义不明确(存在歧义)。
含义说明:
你执行的 SQL 中,WHERE 条件里用到了 blocked_companies 这个列名,但当前查询涉及的多张表中不止一张表有同名列,MySQL 不知道你指的是哪张表的 blocked_companies。
常见原因:
SELECT *
FROM table_a a
JOIN table_b b ON a.id = b.a_id
WHERE blocked_companies = 1; — 两张表都有 blocked_companies,MySQL 不知道指哪个
解决方法:
给列名加上表别名限定,明确指定是哪张表的列:
WHERE a.blocked_companies = 1
或:
WHERE b.blocked_companies = 1
如果只想保留一列,也可以在 SELECT 中明确写出表别名,避免 SELECT * 带出同名列。
修改后提交代码,从开发分支合并到主分支:
从其他开发分支(如 dev、feature 分支)合并到 main 分支,核心步骤是“先同步,后合并”。根据团队协作规范的不同,通常有三种主流操作方式:命令行 Merge、命令行 Rebase 以及通过代码托管平台(GitHub/GitLab)的 Pull Request (PR) / Merge Request (MR)。
以下是详细的操作指南:
方式一:命令行直接合并(最基础、最常用)
适合本地开发,且团队允许直接在本地合并后推送。
1. 切换并更新 main 分支
首先确保你本地的 main 分支是最新的,避免基于旧代码合并。
git checkout main
git pull origin main
2. 合并开发分支
将你的开发分支(假设叫 feature/your-branch)合并到当前的 main。
git merge feature/your-branch
注意:如果此时遇到冲突(就像你之前遇到的 proposal_nda_service.go 冲突),你需要打开文件手动解决冲突,然后执行 git add 和 git commit 完成合并。
3. 推送到远端
git push origin main
方式二:命令行变基合并(保持提交历史整洁)
如果你希望 main 分支的提交历史是一条干净的直线(没有杂乱的分叉和 Merge Commit),可以使用 rebase。
1. 切换到开发分支并变基到最新的 main
git checkout feature/your-branch
git pull origin main # 确保本地 main 最新
git rebase main # 把你的提交“重放”到 main 的最新提交之后
注意:Rebase 过程中如果遇到冲突,解决后执行 git add .,然后执行 git rebase –continue。
2. 切回 main 并合并
因为变基后,开发分支的起点已经是 main 的最新位置,所以此时的合并会是“快进合并(Fast-forward)”,不会产生额外的 Merge Commit。
git checkout main
git merge feature/your-branch
git push origin main
方式三:Pull Request (PR) / Merge Request (MR)(企业级标准做法)
强烈推荐! 在正规团队协作中,不应该直接使用命令行推送到 main。main 分支通常受保护。
推送开发分支:把本地开发分支推送到远程仓库。
git push origin feature/your-branch
创建 PR/MR:在 GitHub/GitLab 页面上,点击 "New Pull Request"。
-
源分支(Source):feature/your-branch
-
目标分支(Target):main
代码审查(Code Review):邀请同事 Review 代码,或者等待 CI/CD(自动化测试)跑通。
点击合并(Merge):审查通过后,在页面上点击合并按钮。平台通常提供三种合并策略:
-
Create a merge commit:保留完整历史。
-
Squash and merge:把开发分支的多个提交压缩成一个,合并进 main(推荐,历史最干净)。
-
Rebase and merge:变基合并,不留 Merge 节点。
💡 核心避坑指南
合并前一定要 pull:永远不要在过期的 main 分支上合并,否则极易产生冲突。
善用 git status:在合并前,确保你的工作区(Working Tree)是干净的。如果有未提交的代码,请先 git commit 或 git stash(如同你之前遇到的报错)。
不要在主分支上直接写代码:main 分支只用来接收合并,开发和修改永远在自己的独立分支上进行。
如何撤销错误的合并?
-
如果还没 push:git reset –hard HEAD~1(退回到合并前)。
-
如果已经 push 到远端:不要用 reset 强推,应该用 git revert -m 1 <merge-commit-hash> 生成一个新的反向提交来撤销。


