一、添加上游项目的本地分支索引
1、从名为 upstream的远程仓库拉取 master分支的最新信息到本地
git fetch upstream master此操作只会更新本地仓库的远程分支索引(如 upstream/master),不会自动修改你本地任何分支上的文件
2、使用 --force选项,强制创建一个名为 master-upstream的新本地分支(如果已存在则重置),并让其指向 upstream/master所对应的提交
git branch --force master-upstream upstream/master这个分支相当于当前上游 master分支状态的一个快照。
3、列出所有名称匹配 master-upstream的分支
git branch --list master-upstream4、显示 master-upstream分支最近的10条提交记录
git log --oneline master-upstream -n 10二、上游项目的更新
1、将上游仓库为upstream的最新提交记录拉到本地
git fetch upstream更新所有远程跟踪分支(包括 upstream/master),但不会改动任何本地分支的工作内容。
2、强制重置 master-upstream分支,使其指向 upstream/master最新的提交
git branch -f master-upstream upstream/master三、将更新合并到本地分支master
1、切换到master分支
git switch master2、将 master-upstream上的最新内容整合到 master分支
git merge master-upstream四、解决任何冲突,完成合并后提交并推送代码到master
git push origin master小贴士:如何优雅地处理合并冲突?
当你执行 git merge 看到提示 CONFLICT (content): Merge conflict in <file> 时,不要慌,按照这三步走:
- 找到“案发现场”
打开冲突的文件,你会看到 Git 自动标记的冲突区域:
<<<<<< HEAD这里是你本地 master 分支的代码(你改动的内容)======这里是上游 master-upstream 分支的代码(别人改动的内容)>>>>>> master-upstream- 进行“人工裁决”
-
保留一方: 删掉你不想要的那部分代码和所有的
<<<<====>>>>标记。 -
整合双方: 手动将两段代码逻辑合并在一起,然后删掉标记。
-
VS Code 技巧: 如果你用 VS Code,代码上方会出现快捷按钮(Accept Current Change / Accept Incoming Change),点一下即可自动完成。
- 告诉 Git 冲突已搞定
修改并保存文件后,必须执行:
# 1. 将解决后的文件标记为已暂存git add <文件名>
# 2. 完成合并提交git commit -m "fix: 解决与上游分支的合并冲突"如果合并过程太乱,你想重头来过,可以执行 git merge —abort 瞬间回到合并前的干净状态,就像什么都没发生过一样。
如果这篇文章对你有帮助,欢迎分享给更多人!
