一文学会git拉取分支,新建分支,推送分支到远程仓库和同步

最近做一个项目,需要拉取指定版本到本地进行开发,后续还需要生成一个新的版本提交。这个过程中怎么拉取到本地,怎么提交到分支,怎么新建分支,怎么同步到线上,本篇文章做了详细解答

一、如何使用git拉取指定的版本

在拉取cloudweb时,我直接是复制了git地址,然后拉取到本地,结果因为最新版本没有更新到主干,导致各种问题,好不容易解决了,但是卡在了登录后台时,随机验证码无法显示。

最后问结果,得到的结论是,需要切换到最新的分支,而不是master。

项目分支

那么如何在本地切换到分支,且不重新下载所有的代码+依赖包,而且还能以这个版本继续提交到云端进行同步呢?

在该项目根目录下,右键单击,选择小乌龟:

1、选择版本分支图(G)

2、在打开的分支图中,选中你要checkout的分支版本,可以看到目前最新的版本是2.5.3

版本分支图

3、右键对着最新版单击,选择,切换检出这个版本

切换检出版本

4、然后点击确定,即可切换到当前分支到2.5.3

切换检出版本

5、经过对比,在本地的资源库名字是跟之前一样的,只是里面的文件用的是这个版本的,对比了线上的git库资源,发现一致,证明达到了要求

分支版本与本地一致

6、通过本地提交,发现也一样,可以正常提交新版本

可以正常提交新版本

总结:

以上是直接用小乌龟进行的。但是假设日后我需要自己新建一个版本的分支,用git操作以上步骤要怎么做呢?

二、在本地最新的基础上创建一个分支,并且提交到线上

前提:本地与云端已经打通,且本地的文件与线上的是最新的master版本。(否则为什么要创建分支呢)?

1、在当前项目下执行git指令

比如我想在线上创建一个叫v1.0.1的版本

可以执行如下指令:

# 创建一个叫v1.0.1的分支
$ git branch v1.0.1

但是这样执行后,只是创建了,并没有将本地的master切换到v1.0.1

这时,可以用下面的指令进行切换:

$ git checkout v1.0.1
# 执行后,由如下提示:
Switched to branch 'v1.0.1'

并且路径也变成了这个分支:

本地分支

以上分了2个步骤,可以二合一变为一个:

 git checkout -b v1.0.1
 # 表示创建一个叫v1.0.1的分支,并切换到该分支,此时你的路径会显示该分支,切换之前是master

2、切换分支后提交到线上进行同步

前面的步骤只是创建了一个分支,并没有同步到线上,也就是线上没有分支列表

现在要推送到线上,可以用如下指令:

git push origin 分支名
# 比如
git push origin v1.0.1
# 这样就创建了远程分支

远程分支

刷新远程分支,可以发现已经有了分支结构:

分支结构

这样其实就建立了本地与远程的关联,下次如果要在本地修改了文件,同步,则直接可以用之前的拉取或提交操作,比如:

git pull 分支名
git push origin 分支名
# 比如
git push origin v1.0.1

如果不是在主干上,而是在分支提交,直接用git push,可能会导致如下提示:

不能直接提交分支

这时记住使用:

git push origin 分支名

拉取线上分支最新文件到线下也一样,也需要添加分支名:

git pull origin 分支名

每次都添加分支名,比较麻烦,可以用下面的指令来关联,这样就简化到跟提交到主干一样的命令了:

git branch --set-upstream-to=origin/分支名
#比如
git branch --set-upstream-to=origin/v1.0.1

也就是直接用:

git pull #拉取分支代码
git push #提交到分支

三、直接在远程拉取一个分支到本地

以上是先有本地主干,在主干的基础上新建了分支,假设我想直接拉取远程分支到本地怎么办呢?

以上问题也可以理解为拉取指定的分支到本地。

可以这样做:

 # 主干是这样拉取
  git clone git地址

 # 分支是这样拉取
 git clone -b 分支名 git地址

 # 比如:
  git clone -b v3.0.0 https://git.imqd.com.cn/RDCenter/FDD/law/disputefrontweb.git

这样即可打通线上线下了。

同步线上线下

四、本地建好分支,如何与线上分支关联

这个我觉得是个伪需求,主要目的其实就是关联,以便同步。

具体可见章节二的后半部分。

五、分支的代码与主干的合并

1、首先切换到分支

git checkout 分支名
# 比如:
git checkout v1.0.1

2、使用git pull 把分支代码pull下来,确保是最新的

git pull

注意:如果当前分支已经是最新,则以上步骤可省略

3、切换到主分支

git checkout master

4、把分支的代码合并到主分支

git merge 分支名
比如:
git merge v1.0.1 #表示将v1.0.1合并到主干master中

5、将主干的推上去即可完成,此时你自己分支v1.0.1的代码就合并到主分支master上了

git push

合并时两个分支的某些文件冲突如何解决?

在进行到merge操作时,如果发生了合并冲突,会暂停合并,必须得手动解决冲突才能继续。

步骤如下:

1、找到冲突的文件,手动合并,解决后,删除git自动写的标注符号,类似于这种带箭头的<<<>>>

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

2、通过提交3部曲提交到线上

git add .
git commit -m '解决冲突'
git push

3、最后再使用合并的指令进行合并

 git merge 分支名
除特别声明外, 本站所有内容皆为原创,未经许可,禁止转载。转载时请务必以超链接形式标明文章出处和作者信息
  • 1,552
(1)
打赏 微信扫一扫 微信扫一扫
                       

关于作者:

web前端老罗

贡献:已经在WEB前端圈发表90篇文章了

简介:前端老罗是一位拥有多年web前端开发经验、管理经验、教学经验的实战派全栈工程师。目前在某名企任职WEB前端技术教官。加我微信:imqdcnn可提供开发、技术咨询、答疑、直播讲座等服务

Ta的专栏 | Ta的站点 | 其他SNS

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关于WEB前端圈

我是前端人(imqd.cn)愿景是不管你是想学习前端还是一名专业的WEB前端工程师在这里都能找到你想要的物料。定位为前端人学习进步的一个平台。在这里你能找到前端学习笔记、教学视频资源、案例、前后端分离、前端框架、低代码平台、可视化数据、多端开发、全栈开发等跟前端有关的一切资源!

关于站长:WEB前端老罗(罗老师)是一位拥有多年web前端开发经验、管理经验、IT培训教学经验的实战派全栈工程师。目前在某名企任职WEB前端技术教官。右边加我微信可提供开发、技术咨询、答疑、直播讲座等服务

WEB前端圈二维码

右边添加老罗微信一对一免费私聊
拉你加入官方微信答疑群

To top