Git入门篇四
基于前期我们讲述的从Git简介,安装,使用结构,到基础命令行的演示
,今天主要讲述Git入门篇的第四张章节重点内容是对分支,冲突,远程仓库的管理使用方式,本篇博客会涉及到GitHub的远程仓库,GitHub计划在Git学习结束后在写一篇对GitHub使用的博客。所有本篇博客不对GitHub做过多讲述。
分支管理
什么是分支?
在版本控制管理工具中,使用多条生产线同时并行推进多个功能的开发,可以提高开发效率,并且各个分支在开发过程中,如果某一个分支开发过程中失败,不会对其他分支和Master主线有任何影响。失败的分支删除即可。
Git如何管理分支
还是和以往一样,进入我们学习Git的目录(Git所管理的那个仓库)我i自己本地是GitlocalStudy目录在之前的博客有过介绍。
1. 分支查看。
执行 git branch
或者 git branch -v
查看我们仓库的分支信息。-v 表示详细信息推荐使用
git branch
git branch -v
2. 分支创建
执行命令 git branch [要创建的分支名]
,然后再执行查看命令,发现当前仓库已经生成一个叫做testBranch的分支,并且 在分支前面有个 *
号表示当前所处的是在哪个分支。除了 *
号还可以从命令行的最后面查看到例如:下图括号中的(master)。
git branch [创建的分支名字]
新创建分支的内容当然是和创建分支时所处的那个分支一致,我本地此时为Master。
3. 分支的切换
执行命令 git checkout testBranch
,从当前Master切换到 testBranch分支,切换过后会发现 命令行最后括号内容显示为testBranch,并且之前提到的*
也是指向分支,还使用绿色高亮显示
git checkout testBranch
4. 分支合并
在分支进行合并之前,我们先将testBranch分支上的helloGit文件内容进行修改->add -> commit 。然后切换到Mastr主线上,我们实现在主线上合并testBranch分支。
在支线上进行修改操作,执行commit ,将分支的内容提交,保持分支上没有待提交的内容。
然后切换到主线,查看相同的文件hellGit
接下来进行分支的合并操作,使用命令git merge [有变动的分支]
。
首先我们切换到Master,在主线上执行合并testBranch的命令,意思就是将testBranch分支的内容合并到主线。
git merge [要合并的分支名]
执行后提示,一个文件有变化,新增一行数据。
此时查看Master helloGit的文件内容,内容合并完成
5. 如何处理分支冲突
首先我们在主线Master,和分支testBranch上面修改同一个文件同一行内容并进行提交保证2个支线是干净的。如下图所示
然后切换到Master,由Master对testBranch进行合并操作,Git会提示你自动合并失败,需要修复冲突,然后提交结果。我们按照Git所提示的内容一步一步进行操作。
vim helloGit.txt,可以看到Git已经帮我们做过一些操作,但是还需要开发手动处理。保留我们自己需要的内容,也需要保留分支的内容。那么我们将 文件中特殊字符 比如<<<<<<HEAD
,======
, >>>>>>testBranch
删除掉。然后自己合并文件内容
到此时并没有结束合并操作,我们查看Git 仓库的状态,提示我们需要add 将此次修改的内容添加到暂存区,或者使用commit -a 的命令完成此次操作。到这里就完成了分支合并的操作
此时再次查看主线Master内容:
此时查看分支testBranch内容:
如何使用GitHub远程仓库?
在GitHub建立一个远程仓库。
在命令行窗口使用git remote
指令
接下来我们在本地命令行窗口使用Git命令进行操作
git remote -v 和 git remote 都可以查看当前本地仓库 拥有远程仓库的信息
git remote add [别名] [远程地址] 添加,并给远程仓库起个别名
因为远程仓库地址那么老长,每次与远程仓库交互都要写一下子。太…
下图中我们创建了一个远程仓库,给他起个别名叫做origin,并且还通过git remote 和 git remote -v
2个命令查看远程仓库的信息
本地库推送到远程库
git push [别名] [分支名]
我们在主线master上,推送testBranch到 远程仓库origin中。这个过程会有些慢,因为GitHub服务器在国外。所以才会使用码云,或者Gitlab
然后我又将Master也推送到了远程仓库。
克隆操作
我们在自己本地新建立一个文件夹:gitTest2。打开命令行窗口,复制远程仓库的地址->执行克隆命令。给远程仓库起别名也是一样的,在这里使用地址。他会自动生成.git文件夹,帮助你初始化了仓库。
git clone 远程仓库地址
在gitTest2目录下生成这个仓库自己的签名,然后修改文件内容。->将修改后的内容push到远程仓库。
pull 和 fetch+merge
git pull [远程库地址别名] [远程分支名]
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
再第一个文件夹下面(GitlocalStudy)下 执行 git pull origin testBranch
意思是将远程仓库内容拉取下来,并且和本地内容进行合并。这是pull的意思。而fetch 是将远程仓库内容拉取下来而已,并不会进行合并。此时你可以去查看拉取下来的最新内容,从而决定是否要进行手动的merge。
以上内容我们演示的是同一个GitHub账号,如果是在开发环境中,主开发将代码上传到GitHub仓库,另外一位开发将其clone下来经过一番修改之后。另外一个开发是不具备提交操作权限的会出现403错误。需要由主开发将另外一个开发邀请进入团队才可后续的操作
主开发点击GitHub的Settings
然后另外一位开发者 访问这个邀请的链接,并且点击接收邀请即可。
如果是跨团队协助,也就是说另外一个开发不是我们团队的成员,此时会涉及到Git专有的审核,以及GitHub上pull Requests功能,后续在写一篇专门博客讲述一下GitHub的使用方式在做介绍。
远程仓库解决冲突
- 如果不是基于GitHub 远程库的最新版所做的修改,不能推送,必须先拉取。
- 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
- 最后将合并过后的内容 push到远程仓库即可。