场景:
我现在在crjdevelop,我昨天拉取了develop的最新代码到我的crjdevelop分支上上面,并在crjdevelop分支上对昨天的最新代码做了修改,但是今天develop又更新了代码,我要如何同步拉取最新代码,并合并我修改的代码
第一步:保存并备份你当前的修改
cd ~/autoware_ws/lubo_auto_car/luobopnc
# 1. 确保在你的分支上
git checkout crj_develop
# 2. 提交本地修改 (也可以用图形化进行操作)
git add .
git commit -m "xxxxxxxxxxxxxx"
# 3. 立即推送到远程备份
git push origin crj_develop
第二步:拉取并合并 develop 的最新代码
现在你的修改已经存入 Git 仓库了,可以放心地把远程的 develop 拉下来跟你的代码合并。
(这步和之前一样,如果遇到冲突就去 VS Code 里解冲突)
# 直接拉取远程 develop 并合并到当前分支
git pull --rebase origin develop
你执行
git pull --rebase origin develop后,Git 做了这几件事:
撤下 :把你
crj_develop分支上你自己写的、还没推送到develop的提交(Commits)先暂时"拿下来"放在一边。更新 :把
crj_develop的基准点(Base)移动到远程origin/develop的最新位置(也就是把你同事们的最新代码拉下来垫在最下面)。放回 :把你刚才"拿下来"的那些提交,一个一个地重新应用(Re-apply)到最新的代码之上。
现在,你的
crj_develop分支既包含了大家最新的代码,也包含了你自己的修改,而且你的修改是在"最上面"的。
第三步:处理冲突(如果发生)
如果在执行第二步时提示 CONFLICT (冲突),说明你修改的文件和 develop 更新的文件重叠了。
-
打开 VS Code 的源代码管理面板(左侧像树杈的图标)。
-
在 "Merge Changes" 列表中点击冲突文件。
-
在编辑器中选择:
Accept Current Change(保留你的)Accept Incoming Change(使用 develop 的)- 或者手动编辑保留两者。
-
解决完所有文件的冲突后,执行命令完成合并:
随便修改一点打印的东西
git add .
git commit -m "Vx.x之上合并了几月几号几时的develop"
git push --force-with-lease origin crj_develop
此时,你的 crjdevelop 分支就既包含你昨天的修改,也包含 develop 最新的更新了。