(四) github分支的知识
1 分支
1.1 分支的概念
用一个通俗的理解就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!
分支在实际开发中的作用:在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发,到最后再合并分支,就可以达到很好的结果。
1.2 master 主分支
在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master (也有叫main) 的分支。通常我们把这个master 分支叫做主分支。
在实际工作中,master (也有叫main)主分支的作用是:用来保存和记录整个项目已完成的功能代码。因此,不允许程序员直接在 master 分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃。
1.3 功能分支
由于程序员不能直接在 master 分支上进行功能的开发,所以就有了功能分支的概念。功能分支指的是专门用来开发新功能的分支,它是临时从 master 主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到 master 主分支上。
上面介绍了分支的一些概念之后,下面就开始进入本地分支操作
2 分支的操作
2.1 查看分支列表
//查看分支列表
git branch
注意:分支名字前面的 * 号表示当前所处的分支。
2.2 创建新分支
使用如下的命令,可以基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样:
//创建新分支
git branch 新分支的名字
2.3 切换分支
使用如下的命令,可以切换到指定的分支上进行开发:
//切换分支
git checkout 分支名字
注意到前面的 * 号已经改变位置
2.4 分支的快速创建和切换
如果我们输入命令创建了一个分支之后,又要输入一个切换分支的命令,就很麻烦,所以使用如下的命令,可以创建指定名称的新分支,并立即切换到新分支上:
//分支的快速创建和切换
git checkout -b 分支名字
注意:
“git checkout -b 分支名称” 是下面两条命令的简写形式:
1)git branch 分支名称
2)git checkout 分支名
2.5 合并分支
功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到 master 主分支上:
//假如在C分支
//先切换到A分支
git checkout A
//此时在A分支,合并A,C分支
git merge C
合并分支时的注意点:假设要把 C 分支的代码合并到 A 分支,则必须先切换到 A 分支上,再运行 git merge 命令,来合并 C 分支!
2.6 遇到冲突时的分支合并
如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法干净的合并它们。 此时,我们需要打开这些包含冲突的文件然后手动解决冲突。
举个栗子,我们再master分支上修改了test_01.txt文件,写入了一段文字,并提交
我们再切换到另一个分支也写一段文字,也提交
最后回到master分支上,去合并test分支,发现有提示冲突
且直接打开文件什么都看不到
我用vscode打开发现两端不同颜色的字体,其实就是不同分支写入的东西,需要我们认为去解决,看到上面有四个选项可以自己点击,如果点错了可以ctrl+z撤回再选。各个选项也不用过多的解释了,选完之后保存,然后跟踪提交再合并就不会有冲突了。
2.7 删除分支
当把功能分支的代码合并到 master 主分支上以后,就可以使用如下的命令,删除对应的功能分支:
//删除分支
git branch -d xxx
注意,删除分支不能在该分支上删除该分支,就好比自己在一艘船上要把船弄沉这一道理。所以要去到其他分支再去删除,如下
上面是讲解了一些本地分支的操作,下面是讲解远程分支的操作
3 远程分支操作
3.1 将本地分支推送到远程仓库
如果是第一次将本地分支推送到远程仓库,需要运行如下的命令:
// -u 表示把本地分支和远程分支进行关联,只在第一次推送的时候需要带 -u 参数
git push -u 远程仓库的别名 本地分支名称: 远程分支名称
//案例
git push -u origin payment:pay
//如果希望远程分支的名称和本地分支名称保持一直,可以对命令进行简化:
git push -u origin payment
注意:第一次推送分支需要带 -u 参数,此后可以直接使用 git push 推送代码到远程分支
3.2 查看远程仓库中所有的分支列表
通过如下的命令,可以查看远程仓库中,所有的分支列表的信息
git remote show 远程仓库名称
3.3 跟踪分支
跟踪分支指的是:从远程仓库中,把远程分支下载到本地仓库中。需要运行的命令如下
// 从远程仓库中,把对应的远程分支下载到本地仓库,名字保持一致
git checkout 远程分支的名称
//从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称
//案例 把远程仓库origin里面的pay分支下载并重命名为payment分支
git checkout -b payment origin/pay
3.4 拉取远程分支的最新的代码
可以使用如下的命令,把远程分支最新的代码下载到本地对应的分支中
//从远程仓库,拉区当前分支的最新代码,保持当前分支的代码和远程分支的代码一致
git pull
3.5 删除远程分支
可以使用如下的命令,删除远程仓库中指定的分支
git push 远程仓库名称 --delete 远程分支名称
//案例
git push origin--delete pay
总结
1)Git 中基本命令的使用
git init
git add .
git commit –m “提交消息”
git status 和 git status -s
2)Github 创建和维护远程仓库
能够配置 Github 的 SSH 访问
能够将本地仓库上传到 Github
3)Git 分支的基本使用
git checkout -b 新分支名称
git push -u origin 新分支名称
git checkout 分支名称
git branch
首先我们回忆一些基本命令。会用上面的这一些基本命令,我们从关于版本控制到git的基础,再到GitHub和GitHub分支,如果真的把四篇文档掌握了,就基本上可以管理好我们自己的github仓库了。
完结