代码托管平台和控制工具【git,github gitee学习连接】(这应该是CSDN中最详细的讲解了)

一,我们书写代码就需要用到代码托管工具,这样会更加有利于自己的开发
优点:
1,分模块团队开发项目。
2,提取不同时间点提交的代码,这样就有利于对项目的开发,后面出现报错,找不到原因,也可以通过代码托管工具,寻找之前的代码。
3,随时随地保存,不怕丢失
4,对于开源的托管平台,可以找别人的开源项目进行查看,理解。

二,解释git,github,gitee,gitLab
1,git是分布式的版本控制工具,有分布式就有集成,集成式的比如SVN就是集成式的,集成也好,分布也好,它们都是用来对代码托管平台进行控制的一个工具。

2,github,gitee,gitLab 就是代码托管平台。**
它们有什么区别呢,github是目前全球最火的代码托管平台,gitee则是中国的代码托管平台,gitLab也是一个代码托管平台,那么它们有什么区别呢。
github和gitee它们的代码都是开源的,就是发布在网上,什么人都可以看。
gitlab则是局域网,就是不发不在网络上,只能公司内部,个人自己查看。

github的缺点就是在中国水土不服,因为它是国外的嘛,很难进行访问,经常访问不了,这里有两个办法,第一个方法就是使用SSH,这个可以进行免密登录,第二个方法就是搭建梯子,这样就可以比较轻松的访问到github。
gitee是中国版本的github,它的代码都可以从github里面拉取,而且里面大部分都是中文,能够理解,不像github,里面全都都是英文,实在是对不太懂英语的中国人不太友好。

三,如何创建远程仓库
1,git创建远程仓库,一般会有几个命令
代码推送 push
代码拉取 pull
代码克隆 clone

四,什么是版本控制
版本控制的目的就是可以记录文件修改的历史,这也就是我前面说的可以通过提交的历史,来找到不同提交时间点的代码。

集中式的版本控制工具
这种工具就相当于几个程序员一起制作一个项目,那么它们用到的是同一套服务器,那么步骤就是A1开发最初版版本,放到服务器上,然后A2程序员拿到服务器上的代码,进行修改第二版,然后A3程序员等A2将第二版提交到服务器上,修改为最终版本,这种流程就是集中式版本控制工具的一个流程。

优点:每个人用的都是一个服务器,一个程序,这样一个人在操作,另外一个人也能够看到看到对方的操作
坏处:因为是同一台服务器,如果服务器出现了故障,那么所有的人就都不能使用了,没有历史记录。

分布式的版本控制工具
它的一个流程就是你自己的电脑就是一个控制器,A可以在自己的电脑上进行代码书写,然后提交到远程服务器,B可以将A提交的远程服务器代码进行克隆到本地服务器,自己进行修改,然后提交。

优点:它的优点就是就算是远程服务器故障,你也可以自己在本地进行代码的书写,只不过你不能在远程服务器故障的时候进行代码的提交罢了,有历史记录

五,git的开发历史
1,git是由Linus开发的,这个人是Linux系统的创始人,他将Linux开发出来后,把它变成了开源,并且面向了所有的人,让别人也一起开发,这是时候软件的合并主要是通过Linus是本人来做的,就是别人做好了一个模块,然后Linus对自己的项目和别人的项目进行对比,发现别人的项目更加的好用,就CV了别人的项目,后来开发人员原来越多,Linus本人就算是全天都在比对别人的代码和自己的代码进行合并也不够时间了,没办法,Linus就花了两个星期的时间开发了git,这就是git的诞生。

,那么接下来我就重点讲解git的工作机制了
1,分别是工作区》暂存区》本地库
工作区就是写代码的地方,它的位置在你代码存放的盘的位置

那么为什么要有暂存区,暂存区的出现就是让git知道你有这么一个代码的文件,就是用git add这个指令,将工作区的代码添加到暂存区,进行临时的存储,暂存区的代码又提交到本地库,用的指令是git commit,提交到本地库之后,就有了历史版本的出现,一旦出现历史版本,你这个代码就删不掉了。

代码托管中心就是基于网络服务器的远程代码仓库,一般我们就称之为远程库

七,git下载地址
网址:https://git-scm.com/

这里讲解一下安装的时候出现的几个点
在这里插入图片描述
小白其实完全可以无脑的下一步就行,但如果有人想要了解一下功能,那我大致的讲解一下。
第一勾选的框,Additional icons On the Desktop ,意思就是安装在桌面上,如果勾选了,安装的快捷键就会在桌面上出现
第二个windows Explorer integration 这个的意思是右键菜单,就是桌面上点击右键,可以出现git 的快捷键,Git Bash Here就是git的命令行客户端,git GUI here 就是git的图形化客户端
Git LFS(large File Support)代表的就是git提交支持大文件
Associate .git* configuration files with the default text editor 意思是配置文件的默认编辑器
Associate .sh files to be run with Bash 意思是关联.sh 格式的文件
在这里插入图片描述
choosing the default editor userd by Git 选择git的默认编辑器,直接默认的就可以,Vim命令的编辑器,用过Linux就懂了。
下面就不讲了,总结,一路无脑下一步
安装成功后,右键有无Git Bash 或者Git GUL 就知道是否安装成功了,git Bash是命令化的,使用git Bash就行,一般也用这个,创建命令行如果觉得太小,记得选择字体,ctrl+滚轮,字体就会变大。

八,git常用的命令
在这里插入图片描述
最前面两个黑色标注的不用记忆,因为用一次就可以了,这两个命令是设置Git的用户名和邮箱(第二个作用打错了,是用户邮箱),前面这两个命令必须使用,如果不用的话就会后面就会出现报错。

九,git的基本操作
1,下载git的第一步,添加名字和邮箱
这里面有一个比较方便的设置,但你点击config 前面的con 然后用tab快捷键,后面的fig也会帮你补全,后面的global这类的代码也一样,算是一个快捷小技巧吧。
设置的邮箱是虚拟的,对方也不会去验证,所以你可以随意设置。
那么如何查看你设置好的文件呢
找到你的电脑》C盘》用户》piao(查看你的git bash ,看一下是什么,找到你这个文件)》.gitconfig 文件,然后打开

如果说里面有name,email 两个字段的话,就说明你注册成功了,例如我下面这个。
在这里插入图片描述
在这里插入图片描述
ps:这里注意一下,这个git签名和以后你注册github的签名是没有任何关系的,只是用来知道你提交到的仓库里面,仓库主人能够知道提交者的名字是谁。

2,初始化本地库
命令:git init
什么是初始化本地库,就是你要用git管理目录,首先要获取目录的管理权,也就是你要初始化
如果不初始化,你是管理不了的,因为你的git没有这个文件目录的管理权限,所以如果要将操作一个文件,必须初始化一下 ,初始化后它就会给你的文件生成一个.git 的目录 ,在windows界面,它默认是隐藏的,如果你想要看到这个.git目录就需要点击文件上面的查看》详情信息》勾选隐藏的目录,就可以看到了。

3,查看一下当前文件夹的一个状态
命令:git status
当你打出后,它会出现三行代码,如下图
在这里插入图片描述
第一个On branch master是他的分支名字,master
第二个No commits yet 意思是你当前还没有提交过任何东西
第三个nothing to commit意思是没有东西需要提交

4,现在我们尝试新增一个文件吧
新增文件命令:Vim 文件名(比如:Vim FanC.txt,这样就创建了一个名字叫做FanC的txt文件)
然后我们对代码进行复制粘贴,首先我们点一下esc ,退出书写,然后将光标放在第一行,点击yy ,yy代表复制,p代表粘贴
然后输入**:wq这个命令,对文件进行保存一下**,类似下面这样
在这里插入图片描述
值得一提的是,这些命令都是Linux操作系统的代码,如果感兴趣的话可以去学习一下,不感兴趣,直接图形界面直接新建一个文件,写一些文字也是可以的。
然后我们可以可以查看一下我们文件写的内容
命令:cat 文件名(cat FanC.txt)
总结:Linux命令和git命令说可以通用的,因为它们的开发者都是同一个人

我们增加了文件后,我们再来看一下文件的状态吧。
在这里插入图片描述
从图中明显可以看到,第一行和第二行,没有变化,它还是在master这个分支下面,它还是没有进行提交,但是第三行变了,Untracked files的意思就是未被追踪的文件

5,追踪文件
文件是红色的,代表它在工作区,还没有被git追踪,它下面给了你提示,nothing added to commit but untracked files 没有添加未被追踪的文件,小括号里面user “git add” to track ,意思就是叫你 输入 git add 命令进行git追踪,加入到暂存区,如下图 。
在这里插入图片描述
它出现了一个警告,这个意思是这个文件将从LF替换为CRLF,这两个是换行符,CRLF是windows的换行符,LF是linx的换行符,我们的电脑是windows的,所以这里就会被自动的转换为CRLF的换行
在这里插入图片描述
这个时候我们再用git status命令看一下,发现没有,它没有红色警告,变成绿色了,说明git已经追踪到了这个文件,它已经到达缓存区了。
如果我们想要删除文件,那么就根据这个提示进行删除就可以了,命令:git rm --cached FanC.txt 删除文件(这个文件的删除只是删除暂存区的文件,工作区的文件并没有被删除)

6,提交文件到本地库
命令:git commit -m"日志信息"
这段代码就是将文件提交到本地库了,-m代表要写入的日子文件,这个日志文件的意思就是将给文件做一个说明。
我们再来看一下文件的一个状态
在这里插入图片描述
这个时候文件的分支没有改变,还是master,但下面一行改变了,它的意思是没有需要提交的文件了,文件提交的非常干净,说明提交本地库已经成功了。
这里再介绍一个命令:
git log,这个命令可以看到日志的一些基本信息

在这里插入图片描述
里面有提交的作者,作者邮箱,还有完整的版本号,就是那个8718****,和提交指针,指向master分支和日志的说明都有。

7,修改文件
如果我们想要修改文件
老方法:指令 Vim 文件名.后缀(Vim FanC.txt)
进入里面点击指令 i ,表示进入文件里面,可以修改了,修改后,点击Esc ,退出修改,然后输入**:wq,回车,保存修改后的文件**
在这里插入图片描述
我们再查看一下文件状态,然后我们发现修改后的文件又变红了,说明这个文件没有进入暂存区,没有被追踪到,这个时候我们又需要进行追踪。
追踪还记得指令吧:git add 文件名.后缀(git add FanC.txt)
然后我们对修改后的文件进行第二次提交到本地库
指令:git commit -m"说明"(比如我说明我第二次提交 git commit -m"second commit FanC.txt")
在这里插入图片描述
如上图,第三行1 file changed ,1 insertion(+),1 deletion(-) 的意思就是一行内容被改变,一行添加,一行删除,就是它将我原来的那行内容删除了,然后将我改变后的内容加入了进去。
这个时候输入指令 git reflog(这个指令意思是刷新日志),我们就可以看到两个版本了。
在这里插入图片描述
之前提交的说明和后面提交的说明都有了。
你可以通过指令 cat 文件名,查看一下
ps:指令git reflog是查看日志的简单版本,git log是查看日志的复杂版本,就是全部都能够查看,能看到更加详细的内容。

8,历史版本切换
当我想要穿越回到历史版本怎么办,比如我觉得修改的指令不太好,那么我想要回到原来那个版本,那么这个时候,我们就需要通过版本号进行穿越。
指令:git reset --hard 版本号
然后我们再次进行查看,就知道它又回到了原来那个版本。
在这里插入图片描述
可以看到指针(HEAD-》master)从原来的second日志,变回了this is my …这个第一个日志,因为我输入了原来的这个版本号,hard 87187f3,这个第一个版本号。
总结:它的一个底层逻辑就是通过指针,指向哪里,你的文件就是属于那个版本。

十,git分支
1,分支的介绍
前面介绍了git的一些基本操作,接下来就要讲到git的分支操作了。
在版本控制中,需要同时推进多个任务,我们可以为每一个人物单独开发分支,分支的目的就是将自己的工作从线上分离出来,开发自己的分支,不会影响主线分支的运行。

eg:我们玩的王者荣耀,客户在主分支上打游戏,开发者从主分支上的复制程序到本地,进行更新,这样更新的过程中就不会影响到客户打王者了,最后再将更新好的功能发布,客户端哪里提示更新,顾客对游戏进行更新就可以了。

2,分支的操作
在这里插入图片描述
上面是一些关于分支的命令,对于分支的切换和修改,这里就不多演示了。
这里需要注意的是,创建分支,切换分支,进行修改保存之后,及得要将她放到暂存区然后提交到本地库,因为刚刚保存的文件git是没有追踪的,它是在工作区的,这个你用git status查看一下状态就知道了。
下面我直接演示一下分支合并
在这里插入图片描述
如上图,我创建了一个hot-fix的分支,并修改了文件,那么我如何与原来分支的文件进行合并呢,其实非常的简单。
在当前分支,master分支上,用合并指令

在这里插入图片描述
从上图我们看到提示,1 file changed,1 insertion(+),1 deletion(-),一行被改变,一个添加,一个删除。就是说hot-fix分支的文件已经合并到master文件里面来了。
通过查看一下文件内容就知道了。
上面的合并就是正常的合并,那么既然有正常的合并,就会有冲突合并。

3,什么是冲突合并
冲突的产生就是当我们合并分支的时候,两个分支在同一个文件的同一个位置有两套完全不一样的修改,Git无法决定我们要使用哪一个,就必须我们人为的决定新代码的内容了。
PS:简单的说就是我两个分支都做了修改,那么git就不知道我们要保存那一个分支了。(原来的是hot-fix分支做了修改,而master分支没有做修改)
OK,接下来我们直接实操一下。
在这里插入图片描述
OK,现在我将两个分支都进行了修改,并提交到了本地库,现在我来进行一下合并。
在这里插入图片描述
合并后的样子,就是这样,它会弹出一个框,然后输入:wq保存,这就是合并后的样子,他们两个不在同一行,所有合并还是成功了,如果修改的在同一行就不行。
如果是同一行它会给你一个文件,你自行选择删除哪一个,添加哪一个,然后老样子,添加,提交,查看一下, 就知道了,这里就不再进行讲解。

4,git进行团队协作
git的目的就是为了进行团队协作,那么我们应该如何进行团队协作呢,进行团队协作就需要用到代码托管平台了,前面的都是前奏,现在我们就要开始进入正片了。

团队协作有团队外协作和团队内协作
团队内协作,就是在一个远程库中,团队协作开发,比如A1写好代码push(推送)到远程库中,A2修改修改,就clone(克隆)一下远程库,修改后,再push上去,然后A1再进行pull(拉取)这个就是团队内协作开发,另外一个人开发,需要前一个人进行 邀请,获得clone权限。
ps:pull 和clone 有什么不同
,pull拉取是更新自己的本地库,比如A1在推送代码托管中心后,在别的地方又进行了代码的添加,这些是和原本被修改的代码可以一起合并,不受影响的,而clone就是完全和远程代码库一模一样了
,就算是你本地库的代码有的地方进行了修改也没用,会全部的被覆盖。

团队外协作,打个比方,A1,A2想要找个高手B改改代码,别人是不可能加入你的代码托管仓库的,这个时候就通过B fork(叉子)一下A1,A2团队的代码,将代码搞到自己的仓库中去,再clone到本地库中,进行修改,再push到自己的代码托管中心。修改好之后,给A1发送pull request(拉取请求),A1审核觉得没有问题,就将修改后的代码**merge(合并)**到自己的远程代码库中去,进行拉取。这个过程就是团队外协作。

接下来读代码托管工具的讲解我另起一页,大家翻这个网址就可以了。
github 和gitee:https://blog.csdn.net/weixin_46964231/article/details/118457373?spm=1001.2014.3001.5501

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值