合并前需先更新本地main分支:git checkout main && git pull origin main;再执行git merge feature-login;若遇冲突,用git status定位,手动编辑删除冲突标记后git add并git commit完成合并。

合并前确保本地主分支最新
在Mac终端执行分支合并前,必须先让本地目标分支(如main或master)与远程最新状态一致,否则极可能因本地落后而触发本可避免的冲突。
打开终端,切换到目标分支:git checkout main
拉取远程最新提交:git pull origin main
【若提示“Already up to date”则继续;若报错“refusing to merge unrelated histories”,说明本地与远程仓库历史完全不兼容,需加--allow-unrelated-histories参数重试】
将功能分支合并进主分支
确认已在main分支后,运行合并命令:git merge feature-login
此处feature-login为你实际要合并的分支名,替换即可。如果该分支与main之间是线性关系(即main没新提交),Git会自动执行快进合并(Fast-forward),无提示直接完成。
如果出现CONFLICT (content): Merge conflict in src/utils/auth.js这类提示,说明已进入冲突状态,立即停止后续操作,进入下一步解决。
定位并手动编辑冲突文件
运行 git status 查看哪些文件存在冲突,输出中会明确列出 Unmerged paths 下的文件名。
用VS Code打开任一冲突文件(如 code src/utils/auth.js),或用nano、vim等终端编辑器直接打开。
找到形如以下结构的标记段:
const token = localStorage.getItem('auth_token');
=======
const token = sessionStorage.getItem('auth_token');
>>>>>> feature-login
HEAD部分是你当前分支(main)的代码,feature-login部分是待合并分支的代码。你需要根据业务逻辑决定保留哪一行,或合并成新逻辑,然后**必须删除全部>>这三行标记**。
这一步不能跳过标记清理——Git只认干净的文件内容,残留标记会导致后续add失败。
暂存解决后的文件并完成提交
冲突文件修改保存后,在终端执行:git add src/utils/auth.js
如果多个文件冲突,可一次性暂存全部已解决的:git add .
最后执行:git commit
此时会自动打开默认编辑器(通常是nano或vim),里面已预填合并提交信息,如“Merge branch 'feature-login' into main”。直接保存退出即可。
若编辑器卡住不会退出,按Ctrl+X→Y→Enter(nano)或 :wq(vim)。











