场景:push本地改动到feature分支,现提出merge request到master分支,存在冲突
更新你的本地仓库:
确保你的本地仓库是最新的,这样你可以获取到最新的master分支的代码。你可以使用以下命令:
git pull --rebase
切换到你的feature分支:
确保你在正确的分支上工作,这里是feature分支:
git checkout feature
合并master分支到feature分支:
这将尝试自动解决冲突:
git merge origin/master
解决冲突:
如果自动合并失败,Git会告诉你哪些文件存在冲突。你需要手动编辑这些文件,解决冲突。冲突的部分通常会被标记为<<<<<<<, =======, 和 >>>>>>>。
(如果有安装git小乌龟软件,可以右键解决冲突,更加直观,解决完标记为已解决则不需要下面操作)
添加解决冲突后的文件:
解决完冲突后,使用git add命令将这些文件标记为已解决:
git add <解决了冲突的文件>
完成合并:
使用git commit来完成合并过程:
git commit -m "Resolved merge conflicts"
推送改动到远程仓库:
一旦解决了冲突并且提交了更改,你可以将这些改动推送到远程仓库:
git push origin feature
更新Merge Request:
重新提交Merge Request请求,确保新的Merge Request反映了最新的更改(多一条解决冲突的提交)。
进行代码审查:
在合并到master分支之前,通常需要进行代码审查。确保你的更改符合项目的标准和规范。
合并到master:
一旦代码审查通过,你可以将feature分支合并到master分支。
第二套方案(避免上游merge到下游)
在进行 git rebase 和 git push --force-with-lease 操作之前,请确保你已经在正确的本地分支上,并且已经备份了你当前的更改,以防在操作过程中出现问题。
以下是你需要执行的步骤:
切换到你的本地分支(假设你要操作的分支是 feature-branch):
git checkout feature-branch
拉取最新的 develop 分支(确保你在本地有最新的 develop 分支):
git fetch origin
重新基于 develop 分支:
git rebase origin/develop
如果在 rebase 过程中出现冲突,请根据提示解决冲突,然后继续执行:
git rebase --continue
强制推送更改到远程分支:
git push --force-with-lease origin feature-branch
–force-with-lease 选项可以避免在远程分支上丢失他人的提交,它确保在推送时,你的本地分支是基于远程分支的最新状态。