git pull能在本地同步远程新增分支吗?

问题:feat/xxx只存在远程,在本地master上执行git pull,git merge feat/xxx ,提示无法合并,但执行git checkout feat/xxx可以切换到该分支。

这个问题可以拆解为两部分:

  1. 在本地qa/1206执行git pull,并没有同步创建本地的feat/xxx。
  2. git pull之后,再执行git checkout feat/xxx,就能创建本地的feat/xxx。

一、首先我们解决第一个问题,git pull命令具体做了什么

1. git pull

git pull的完整命令是git pull [<选项>] [<仓库> [<引用规范>…]] ,这三个参数度都可以省略,其中引用规范通常是分支名。<仓库><分支>的默认值从 git-branch[1] –track 设置的当前分支的 “远程” 和 “合并” 配置中读取。使用git branch -vv可以看到所有的本地分支与远程分支的对应关系。

2. 使用git pull时,发生了什么

使用git pull时,会执行两件事:

  •   执行git fetch和git merge,将远程分支的更改合并到本地分支上。
  •   更新所有其他分支的远程跟踪分支,仅fetch

二、然后是第二个问题,执行git checkout feat/xxx后为什么本地就有了feat/xxx分支

对于git checkout ,如果在本地没有找到该分支,而远程存在名称相同的分支并且没有指定–no-guess,则该命令等同于 git checkout -b <分支> --track <远程仓库>/<分支>。即在本地创建分支并且将其和远程分支建立关联。

三、实操复现

示例背景:远程新增了origin/test分支,本地不存在该分支,现在想要将test分支合并到本地的master分支。

1.  使用git pull时,fetch拉取到了远程的test分支。
git pull能在本地同步远程新增分支吗?2. 通过merge将test合并到master,却失败了,原因是本地不存在该分支。git pull能在本地同步远程新增分支吗?3. 使用git checkout test可以在本地创建新的test分支,并将其远程分支设置为origin/test。git pull能在本地同步远程新增分支吗?4.此时再将test分支合并到master上,就能成功了。git pull能在本地同步远程新增分支吗?

上述方法需要4步才能合并不存在本地的分支,还有一种简单方法只需一步,使用git pull origin <远程分支名> 拉取指定远程分支合并到当前分支上。
git pull能在本地同步远程新增分支吗?

参考:

www.freecodecamp.org/chinese/new…
git-scm.com/docs/git-pu…
www.runoob.com/git/git-pul…
www.ruanyifeng.com/blog/2015/1…(常用git命令)

原文链接:https://juejin.cn/post/7353447472557539391 作者:Monicaaa_

(0)
上一篇 2024年4月3日 下午4:12
下一篇 2024年4月3日 下午4:22

相关推荐

发表回复

登录后才能评论