Git合并upstream/main到本地分支且不丢失自有变更的操作步骤咨询
完整操作步骤
步骤1:检查并配置上游仓库(upstream)
首先确认本地是否已绑定上游仓库(即你fork的原始仓库):
- 执行命令查看远程配置:
git remote -v - 如果输出中没有名为
upstream的远程地址,执行以下命令添加,将<上游仓库地址>替换为原始仓库的HTTPS或SSH地址:git remote add upstream <上游仓库地址>
步骤2:拉取上游最新代码
执行以下命令拉取上游所有分支的最新版本,该操作仅拉取缓存,不会修改你本地的任何代码,完全安全:git fetch upstream
步骤3:切换到你的功能分支
确认你处于本地newFeature分支,若已在该分支可跳过:git checkout newFeature
步骤4:将你的提交应用到上游最新代码之上
执行变基操作,该操作会先临时存储你在newFeature分支上的所有提交,将分支基底更新为upstream/main的最新版本,再依次把你的提交逐个应用到最新代码上,绝对不会丢失你的任何提交:git rebase upstream/main
步骤5:处理合并冲突(若存在)
如果出现合并冲突,git会暂停变基流程:
- 打开所有标记了冲突的文件,修改
<<<<<<< HEAD到>>>>>>> <你的提交哈希>之间的冲突内容,保留你需要的代码 - 冲突修改完成后,执行
git add <冲突文件名>标记冲突已解决 - 执行
git rebase --continue继续后续的提交应用流程 - 若中途想放弃本次操作,直接执行
git rebase --abort即可回到变基前的状态,你的所有代码不会有任何改动
步骤6:推送分支到你fork的远程仓库
变基完成后,本地分支的提交历史已经更新,需要用强制推送的方式同步到你自己fork的远程仓库(仅影响你自己的fork仓库,不会改动上游仓库):git push origin newFeature --force
完成以上操作后,你就可以直接在代码托管平台创建指向上游仓库的Pull Request了。
注意:全程所有你的本地提交都会被保留,即使出现操作失误也可以通过git reflog找回历史版本,不存在代码丢失的风险
内容的提问来源于stack exchange,提问作者Ivan Cantarino
相关产品推荐
相关产品推荐

