Git04-同步1-2:在feat/B分支上同步origin/main新代码【git fetch origin⮕git rebase origin/main】
下面按Git 新手视角详细讲解:
gitfetch origingitrebase origin/main并且全程只使用传统命令,例如:
gitcheckout feat/B不使用git switch。
一、这个操作要解决什么问题?
你现在在功能分支:
feat/B别人已经往远程主分支合入了新代码:
origin/main你想把这些最新代码同步到自己的feat/B分支上。
推荐操作是:
gitcheckout feat/Bgitfetch origingitrebase origin/main这套命令的意思是:
先切到
feat/B分支,然后拉取远程仓库最新信息,最后把feat/B上自己的提交重新放到最新的origin/main后面。
二、先看完整推荐流程
在feat/B上同步origin/main新代码,建议这样做:
gitstatusgitcheckout feat/Bgitfetch origingitrebase origin/main如果 rebase 成功,并且你的feat/B之前已经推送到远程,通常还需要:
gitpush --force-with-lease origin feat/B如果你的feat/B只是本地分支,还没有推送过远程,可以正常推送:
gitpush origin feat/B三、第一步:确认当前工作区是否干净
在 rebase 前,建议先执行:
gitstatus如果看到类似:
nothing to commit, working tree clean说明当前工作区是干净的,可以继续。
如果你看到有修改,例如:
modified: src/example.js说明你还有未提交的代码。
这时不建议直接 rebase,因为 rebase 过程中可能会和你未保存的修改混在一起,容易搞乱。
你有两个选择。
选择一:把修改提交掉
gitadd.gitcommit-m"your commit message"然后再执行:
gitfetch origingitrebase origin/main选择二:先临时保存修改
gitstash然后同步主分支:
gitfetch origingitrebase origin/main完成后再恢复修改:
gitstash pop四、第二步:切到feat/B分支
因为你要更新的是feat/B,所以一定要先切到这个分支。
不用git switch,使用传统命令:
gitcheckout feat/B切换成功后,可以用下面命令确认当前分支:
gitbranch你会看到类似:
main * feat/B星号*所在的分支就是你当前所在分支。
也可以用:
gitstatus看到类似:
On branch feat/B说明你当前确实在feat/B上。
五、第三步:执行git fetch origin
gitfetch origin这一步的作用是:
从远程仓库
origin获取最新的分支、提交、标签等信息,但不会直接修改你当前分支的代码。
很多新手容易误解这一点。
git fetch origin不等于把代码合进来了。
它只是更新你本地看
