最近做一个项目,需要拉取指定版本到本地进行开发,后续还需要生成一个新的版本提交。这个过程中怎么拉取到本地,怎么提交到分支,怎么新建分支,怎么同步到线上,本篇文章做了详细解答
一、如何使用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 分支名