【分布式版本控制系统Git】| Git 分支操作、Git 团队协作机制、GitHub 操作

本文介绍了Git的分支操作,包括创建、切换、合并分支以及解决冲突的方法。阐述了Git在团队中的协作机制,如团队内和跨团队的代码同步与合并流程。此外,详细讲解了GitHub的使用,如创建远程仓库、推送与拉取代码,以及SSH免密登录设置,确保安全高效的代码管理。
摘要由CSDN通过智能技术生成

目录

一:Git 分支操作

1. 什么是分支

2. 分支的好处

3. 分支的操作

二:Git 团队协作机制

1. 团队内协作

2. 跨团队协作

三:GitHub 操作

1. 创建远程仓库

2. 远程仓库操作

3. 跨团队协作

4. SSH免密登录


一:Git 分支操作

服务器运行的模式,从右往左看:

1. 什么是分支

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时 候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是 一个单独的副本。(分支底层其实也是指针的引用

例:假设现在已经有一个master分支在运行了,我需要添加新的功能,那就需要从master分支复制一份到feture-blue分支进行开发(master分支用户还可以正常使用) ,开发以后在与原来的master分支合并一下即可;如果此时合并后导致程序运行出现错误,此时在从mater分支引申出来一个hot-fix分支(热修分支),交给测试人员测试,测试完成以后,在合并到master分支!

2. 分支的好处

①同时并行推进多个功能开发,提高开发效率。

②各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

3. 分支的操作

(1)查看分支

基础语法

git branch -v 

案例实操

*代表当前所在的分支,*在那个分支前面,就代表当前指定的是哪个分支

 (2)创建分支

基础语法

git branch 分支名 

案例实操

再创建一个分支hot-fix!

 此时再次查看当前的分支结构

 (3)切换分支

基础语法

git checkout 分支名

案例实操

此时修改Hello.java,此时就需要重新添加到暂存区、提交到本地库!

(4)合并分支

基础语法

git merge 分支名

案例实操

把hot-fix分支合并到master分支!

注:是把指定的分支合并到当前分支上,所以此时应该在master分支上!

 此时在master分支,查询Hello.java文件

 (5)产生冲突

冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个,必须人为决定新代码内容。

第一步:首先在master分支,修改Hello.java,进行add和commit

第二步:切换到hot-fix分支,修改Hello.java,进行add和commit

 第三步:切换到master分支,进行合并,此时两个文件都是修改的,就会发生冲突

查看文件的内容,也会提示那个地方冲突了

 (6)手动解决冲突

第一步:手动合并代码,并add和commit

第二步:此时进行修改了,需要进行commit,会出现一个致命的错误

如何解决?不要带文件名!

第三步:查看Hello.java,已成功合并

此时切换到hot-fix分支,查看Hello.java还是原来的内容

注:产生冲突后只会修改要合并的分支上的文件内容,被合并的分支内容不变!

总结:master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD指针决定的。所以创建分支的本质就是多创建一个指针;所以切换分支的本质就是移动 HEAD 指针。

二:Git 团队协作机制

1. 团队内协作

首先岳不群先把华山剑法推送到(push)代码托管中心(远程库),此时令狐冲把远程库的华山剑法完整的复制克隆下来(clone),此时令狐冲发现华山剑法有缺陷,进行学习修改完善后,再次push到远程仓库(此时推送push,需要岳不群给权限才可以)!此时岳不群在通过从远程库拉取(pull)更新自己的本地库!

注:clone和pull的区别

git clone:是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地(即将远程库整个下载到本地),是一个本地从无到有的过程。

git pull:在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。

2. 跨团队协作

此时是令狐冲找到了自己的好朋友东方不败进行修改,不是同一个团队的人;此时东方不败通过fork(叉过来),把岳不群的远程库复制一份到东方不败自己的远程库,此时东方不败用的是自己的远程库;进行克隆clone到本地库进行修改!修改好以后push到东方不败自己的远程库,然后如何在发送到岳不群的远程库呢?此时需要发一个请求(pull request)给岳不群,需要审核,然后合并(merge)过来。最终岳不群就可以pull到自己的本地库进行修炼了

三:GitHub 操作

GitHub 网址:https://github.com/

1. 创建远程仓库

先注册登录GitHub

创建远程仓库

输入远程库的名字,尽量与本地库保持一致

创建好远程库以后,有两个链接:HTTPS连接方式和SSH连接方式 

2. 远程仓库操作

(1)创建远程仓库别名

(1)基本语法

git remote -v 查看当前所有远程地址别名 
git remote add 别名 远程地址

(2)案例实操

(2)推送本地分支到远程仓库

(1)基本语法

git push 别名 分支 

(2)案例实操

第一次推送会卡在哪里,等待页面的跳转让我们进行授权

如果本地还没有过SSH免密登录操作(后面会讲),则在执行命令后会弹出一个Connect to GitHub的提示框

点击Sign in with your browser,如果你的 GitHub 尚未进行过任何 Git 相关授权,则会给出确认授权提示信息,点击Authorize GitCredentialManager进行授权即可

授权成功后,成功推送本地分支至远程库(如果一直推送不成功,关闭无线网,使用手机热点)

(3)拉取远程仓库到本地

例:当远程库的内容与本地库不一致时,需要重新拉取到本地库!(此时远程端增加了一行代码)

Hello Git 11111111
Hello Git
Hello Git
Hello Git
Hello Git master test
Hello Git hot-fix test
1111111111111

(1)基本语法(和推送是对应的)

git pull 远程库地址别名 远程分支名

(2)案例实操

查看本地库的代码

(4) 克隆远程仓库到本地

(1)基本语法

git clone 远程地址

(2)案例实操

创建一个新的目录(git-hlc空目录),模拟一个新的用户去克隆远程仓库到本地!

注:克隆代码是不需要登录账号的!

注:远程仓库地址不能使用别名了!

 此时不仅仅是把Hello.java代码克隆过来了,而是把整个仓库克隆过来!

总结:实际上克隆会做三件事!

①拉取代码。

②初始化本地仓库。

③创建别名(创建的默认别名叫做origin)。

(5)团队内协作

解释:对于仓库是岳不群自己的,令狐冲可以直接clone到自己的仓库,不需要任何验证和密码;但是如果令狐冲想要推送到岳不群的仓库中去,就需要先被邀请加入团队才可以!不然就是权限不够!

选择邀请合作者 (添加合作的用户名到自己的项目团队)

 添加成功后,会有一个邀请函

 然后令狐冲用户需要登录自己的github账户,复制这个邀请函地址到地址栏,接受邀请即可!

 再次进行推送

3. 跨团队协作

第一种方法:直接个根据地址fork(叉)过来

①将远程仓库的地址复制发给邀请跨团队协作的人,比如:东方不败。

②在东方不败的 GitHub 账号里的地址栏复制收到的链接,然后点击 Fork 将项目叉到自 己的本地仓库。

叉成功后可以看到当前仓库信息。

第二种方法:东方不败也可以根据项目名称直接进行搜索,加上账号可以更加精准的定位! 

③东方不败就可以在线编辑叉取过来的文件

进行编辑修改

④编辑完毕后,填写描述信息并点击左下角绿色按钮提交

⑤接下来点击上方的 Pull request(拉取请求),请求去push到岳不群的远程库

并创建一个新的请求(绿色的是修改的代码,被标识出来)

 

⑥回到岳不群 GitHub 账号可以看到有一个 Pull request 请求(记得要先刷新)。 

 

进入到聊天室,可以讨论代码相关内容。

 

⑦如果代码没有问题,可以点击 Merge pull reque 合并代码。

 

4. SSH免密登录

我们可以看到远程仓库中还有一个 SSH 的地址,因此我们也可以使用 SSH 进行访问。

首先找到当前用户的家目录(删除以前生成的密钥.ssh文件夹)

在当前用户的家目录下,进入git bash,进行密钥生成的操作(重新生成.ssh文件)

ssh-keygen -t rsa -C 邮箱

重新生成.ssh文件,里面包含公钥和私钥(把公钥的内容进行复制)

然后点击用户头像→Settings→SSH and GPG keys

出现以下界面,表示添加成功

 以后使用SSH连接就不需要登录验证了!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@每天都要敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值