关于git switch命令拉取远程变更及本地与远程分支关联的技术问询
嘿,这个问题问得很实在,我来给你把Git的这个行为拆解明白:
首先明确:
git switch <branch>不会自动拉取远程仓库的最新变更。这个命令的核心作用只是切换到你本地已经存在的分支版本——比如你本地的dev分支还是上周的状态,而远程dev已经有了新的提交,直接执行git switch dev后,你看到的还是本地旧的内容,远程的新改动不会自动同步过来。如果想要获取远程分支的最新内容,你需要主动执行同步操作:要么用
git fetch origin拉取远程所有分支的最新信息(这一步只是把远程数据拿到本地Git仓库,不会合并到你的工作分支),要么针对特定分支执行git pull origin <branch>(这相当于git fetch加上自动合并,直接把远程分支的最新内容合并到当前本地分支),做完这些再切换分支,才能看到远程的最新状态。关于本地与远程分支的关联:只有当你的本地分支是基于远程分支创建的(比如用
git switch -c my-feature origin/my-feature这种命令),或者你手动通过git branch --set-upstream-to=origin/my-feature my-feature设置了追踪关系,本地分支才会和对应的远程分支建立关联。关联之后,你后续执行git pull或者git push时,不用每次都指定远程仓库和分支名,Git会自动对应到关联的远程分支。但要注意,这种关联只是“对应关系”,不是说本地分支会自动变成远程的实时副本——你还是得主动执行git fetch或git pull,才能把远程的新变更同步到本地。
备注:内容来源于stack exchange,提问作者juan

