Git04-同步1-1:在feat/B分支上同步origin/main新代码【git fetch origin⮕git merge origin/main】
下面是按“更有层次、更适合 Git 新手阅读”重新组织后的版本。重点调整是:
- 先讲清楚场景和核心结论;
- 再讲同步前的准备;
- 单独一个模块讲
merge; - 单独一个模块讲
rebase; - 最后集中对比
merge和rebase,给出新手建议。
Git 新手指南:在feat/B分支上同步origin/main最新代码
一、适用场景
假设你已经从远程主分支origin/main创建了一个功能分支:
gitcheckout-bfeat/B origin/main现在你正在feat/B分支上开发功能,但团队其他人可能不断往origin/main合入新代码。
因此,你需要在开发过程中,定期把origin/main的最新代码同步到自己的feat/B分支中。
二、先记住最推荐的新手做法
对于 Git 新手,最推荐使用merge 方式同步origin/main:
gitcheckout feat/Bgitstatusgitfetch origingitmerge origin/main这几条命令的作用分别是:
git checkout feat/B 切换到你的功能分支 feat/B git status 检查当前工作区是否干净 git fetch origin 获取远程仓库 origin 的最新信息,但不修改当前代码 git merge origin/main 把 origin/main 的最新代码合并到当前 feat/B 分支也可以用一条命令:
gitpull --no-rebase origin main但对于新手,更建议先使用:
gitfetch origingitmerge origin/main因为这样更容易理解 Git 做了什么。
git pull本质上会先执行fetch,然后再根据参数或配置选择使用merge或rebase来整合代码。Git
三、先理解几个基础概念
1.origin是什么?
origin通常表示远程仓库的默认名称。
例如,你从 GitHub、GitLab 或公司代码平台克隆代码后,远程仓库通常就叫:
origin2.origin/main是什么?
origin/main表示:
远程仓库 origin 上的 main 分支更准确地说,它是你本地记录的远程main分支状态。
注意:
main 是本地分支 origin/main 是远程跟踪分支它们不是同一个东西。
3.feat/B是什么?
feat/B是你的功能分支。
通常用于开发某个具体功能,例如:
feat/B 表示开发 B 功能你一般不应该直接在main分支上开发,而是从origin/main创建一个功能分支:
gitfetch origingitcheckout-bfeat/B origin/main这样可以保证你的功能分支一开始就是基于远程主分支的最新代码创建的。
4. “实时拉取”是什么意思?
Git 并不会自动实时同步代码。
这里说的“实时拉取”,更准确地说是:
在 feat/B 开发过程中,你定期主动把 origin/main 的最新代码同步到 feat/B。推荐在这些时机同步:
每天开始开发前 提交代码前 推送代码前 发起 Pull Request / Merge Request 前 发现 origin/main 有重要更新后四、同步前必须先检查工作区状态
在做任何拉取、合并、变基之前,都建议先执行:
gitstatus如果看到:
nothing to commit, working tree clean说明当前工作区是干净的,可以继续同步。
如果看到:
modified: xxx.js说明你还有未提交的修改。
这时不要急着同步,应该先处理本地修改。Git 官方文档也建议,在切换分支或整合远程修改前,最好保持工作区干净,否则未提交修改可能和分支变更产生冲突。Git
情况一:当前修改已经完成,建议先提交
gitadd.gitcommit-m"feat: update B feature"然后再同步origin/main:
