工具的使用——git
创始人
2024-06-02 12:42:50
0

这里是公众号:自学编程村关注后,回复“书籍”,领取1000多本计算机书籍,涵盖语言语法、数据结构算法、AI相关书籍、开发相关等等各种书籍,应有尽有,你总会用到。
.
.
关注方式见主页或文章底部。想要加群可从公众号中加我wx

本文是一个入门级别的介绍。更多的在于宏观介绍底层原理+应用。不会过多纠结于部分的细节。

【看完本文,你将收获:1、了解什么是Git;2、如何下载Git;3、如何使用Git;4、简单了解Git的原理】

参考文章:

[1]https://blog.csdn.net/mayfla/article/details/78661718

[2]https://blog.51cto.com/yht1990/1832284

[3]https://blog.csdn.net/qq_29678157/article/details/127953606

[4]https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

[5]https://blog.csdn.net/mayfla/article/details/78661718

所谓git,实际上就是一个开源的项目部署工具。在我的理解里,它就是一个分布式地、易于共享协作的、易进行版本控制的工具。

简而言之,其就是一个开源的分布式版本控制系统。

那么我们接下来,就来具体地介绍一下这玩意,以及它应该怎么去用。

我们在下面将会反复提及这样一个关键词:版本控制。甚至是通过各种不同的方式来去实现版本控制。

企业开发中的版本控制器——SVN和Git

一般来说,在企业开发过程中,对于一个大型的项目来说,我需要多次迭代、测试,一般都是需要有版本控制器的。

何为版本控制器

举个简单的例子,我们假设这个项目叫做基于网络环境的多媒体教学系统。

第一次,我搭建好了一个大体的框架模型。假设为版本1.0.

第二次,我加入了直播功能。假设为版本2.0

第三次,我加入了录播功能。假设为版本3.0

第四次,我加入了作业功能。假设为版本4.0

随着需要增加的功能越来越多,修改的次数越来越多。

现在问题是,当你某个模块做错了,不小心点了保存,然后继续往下去做,然后导致后面全错了。

当你回过头来想去修改的时候,这个时候你最简单的做法,就是找到出错点之前的某个副本,然后从那个位置开始重做、修改。

但是,当次数越来越多,你根本不会记得每一次修改了啥。而且我们也不可能每一个版本都在本地复制一个副本出来。

为了帮助我们管理这些版本的项目文件,于是,我们就有了版本控制器。

我们可以将我们的项目用Git来帮我们管理。

这就和你打怪升级的时候要存档是一个道理

Git和SVN

这两个是比较常见的版本控制器。它俩的特点刚好是对立的。

一个是集中式版本控制器。一个是分布式版本控制器。

SVN:

版本库是集中存放在中央服务器的。

团队中的每个人开始工作时,必要①联网,②从中央服务器下载代码,③工作结束后需要将修改后的版本重新提交到中央服务器上

如下图所示:

image-20230312001543973

对于SVN来说,数据安全性是较低的。因为如果中央服务器坏掉了,而在本地又没有留有副本。并且,如果来来回回下载、推送速度过慢,那么这种方式就不是很友好了。比如提交个10M的文件要5分钟,那能把人给急死。

Git:

那么,对于Git来说,其是一种分布式的版本控制工具。

它没有中央服务器。版本库就在自己的电脑上,就是说,Git会让每个人在自己的本地也创建一个代码仓库(可能是通过快照的方式存储)。也就是说,每个人的本地也是一个代码仓库。所以不需要联网。在多人协作时,只需要将各自的修改推给对方即可。

不过实际在工作的过程中,很少会直接在两个人的电脑上直接推送修改。因为大家可能不会在一个局域网内,甚至于说别人的电脑根本就没有开机。所以在一般情况下,分布式版本控制系统也会通常有一台充当“中央存储器”工作的服务器。但是,这个服务器存在的价值仅仅是方便大家“交流”修改。即使没有它,大家也能正常工作,只是交换不方便而已。

image-20230312001846463

那么,我们在下面,主要就是来介绍主要的Git操作,然后并解释一下每个操作都有什么样的作用,代表着什么。目的就是能让大家快速上手用起来并能够大概理解其中的含义。可以先不去追究其中的细节。

介绍到这里,想必你应该能够明白,Git在什么时候能够派出用场了吧。

比如,需要备份的时候。比如,需要进行版本还原的时候、追溯是哪个版本产生问题的时候(这也是最主要的功能)。比如,大家在一起协同开发的时候。。。等等

Git的安装

关于Git安装,这里介绍Linux下和Windows两种。

Linux

Linux下较为简单。直接

yum install -y git

即可。

然后可以进行配置:

git config --global [user.email] "你的邮箱" //这个是看提交日志的时候显示的邮箱
git config --global [user.name] "你的名字" //这个是看提交日志的时候显示的名字
git clone [你的gitee/github仓库地址] //在你创建的远端仓库里点下载就可以复制看到

这项工作,就好比你登录Git的用户名id一样。即作为一个识别功能。

Windows

Windows下面其实也很简单。只不过需要下载一个客户端。它可以算得上是图形化界面了

这是下载链接:https://git-scm.com/download

image-20230312145148279

然后下载完毕后,双击exe文件运行。

image-20230312145339956

这是一个set-up工具助手,直接双击,然后一路next即可。

安装完后,在安装路径下,能够看到这样两个东西:

image-20230312145644906

同时,右击鼠标,也可以看到这两个东西:

image-20230312145744949

所谓的Git GUI,就是Git的图形化界面;

同理,所谓Git Bash,就是Git的命令行模式(Bash)。

然后接下来首要的事情,还是要设置用户名和邮箱。因为每次Git提交都会提交该信息。

设置方式:打开Bash,然后和刚刚在Linux环境下一样

git config --global [user.email] "你的邮箱" //这个是看提交日志的时候显示的邮箱
git config --global [user.name] "你的名字" //这个是看提交日志的时候显示的名字
image-20230312150119023

倘若你想要实现GUI的快速上传,可以借助小乌龟。当然,在Windows下你也可以实现用命令行上传。

如果你想要借助小乌龟,你可以参考下这篇文章。https://blog.csdn.net/xdnxl/article/details/129476709?csdn_share_tail={“type”%3A"blog"%2C"rType"%3A"article"%2C"rId"%3A"129476709"%2C"source"%3A"xdnxl"}

如果你想要用命令行,请往下看,我们会介绍在Linux中,如何用命令行来实现。

命令行下实现克隆和提交

提交

总的来说,就是三大步骤。

1、add步骤。简单来理解,就是告诉git,让它来帮助我们管理我们的文件。

具体为:

git add 文件名

2、commit步骤。简单来理解,就是将我们的代码提交到我们本地的仓库。没错,就是本地的仓库(可以参照上面说到和SVN的区别时的图)。这也是我们说Git能够实现分布式、每一台主机都是一个一个版本、不需要联网即可获取代码的理由。具体我们下面来说。

有的时候可能会因为add和commit之间文件做出了修改或者是其他原因,导致不同步而使得commit出错。解决的办法就是再add、commit一下即可。

格式:

git commit -m "提交日志"  

注意,这个提交日志最好不要乱写。最好写明这是个什么版本、改动的具体内容是什么。

3、push步骤。简单来说,就是将我们的代码提交到远端的服务器上去。通常为Github或者Gitee等。

格式:

git push 

注意,这里可能会弹出一个命令让你输入用户名和密码。

你需要输入的是你登录gitee或github时的账号和密码。

克隆

这个在命令行下更简单。直接:

git clone xxxx.git

这个后面的xxx.git是指一个以.git为结尾的链接。

获取方法,登录你的Github(或者其他git服务器):

image-20230312163147305

一定注意,我们这里选择的是HTTPS。

那么,经过上面的操作,实际上就已经能够进行代码的提交和克隆了。我们下面再来具体讲一讲,每一步的原理是什么,以及如何实现版本控制。然后,我们再来介绍介绍分支

Git的基本原理

注意,这里所讲的基本原理,是一个宏观的认识,换句话说,它还是比较浅显的。但是它有助于我们理解Git本身以及我们前面的指令的作用。

Git的工作和层次结构可以分为这样四层:

image-20230312193814259

从宏观来分,可以分成远程服务器和本地两个层面。远程服务器也可以叫中心服务器。

对于本地所存储的,其包含了本地仓库、暂存区和工作目录三个层面。

工作目录就是平时执行一切文件操作的地方。比如写代码、读数据、保存文件等等(也就是我们执行git init的地方)。

暂存区和本地仓库都是存在一个叫做.git的文件目录下。它们仅是用来存储数据。

image-20230312191326851

它是一个隐藏文件。一般来说,它是在执行git add之后,便会形成在你所add的文件路径下。

在add之后,文件就已经提交到了暂存区了。

在commit之后,文件就由暂存区提交到了本地仓库。

image-20230312192526041

而在push之后,其就会从本地仓库里提交到远程服务器仓库中。

具体可以用如下的示意图再来表示一下:

image-20230312193512263

不过,需要留意的是,我们在add、commit的时候,所提交的并不是文件本身,并不是文件拷贝复制一份。那样也太蠢了。一般来说,都是文件快照。

有了上面这样四层结构的概念,我们就可以来介绍,实际上,除了有add、commit、push等操作,常见的还有fetch(clone)、checkout、pull(fetch+合并)操作。

它们之间的具体关系,可以如下图所示:

image-20230312194135142

用Git来实现版本控制

接下来,我们就可以来说一说,如何用Git来实现版本控制了。

实际上,这一系列的工作,核心在于日志文件。

我们可以用:

git log

来去查看提交(commit)的日志文件。

然后,我们再用命令:

git reset --hard commitID

来进行版本回退。

而commitID可以使用我们刚刚的git log来去查看。

同时要说的是,我们进行版本回退这项操作本身,也会被记录。

不过,我们可以用

git reflog

这个指令来去查看已经删除的提交记录。

分支功能

我们在这里再来说一说最后一个比较重要的功能——分支(branch)。

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线

什么是分支

在此之前,还是来简单地说一下,什么叫做分支吧。

简单来说,就类似于“多开”,多个事务,多个进程。

画个图,举个例子来说一下:

image-20230312195411400

如上图,在一个大项目里,同时进行多条线路的开发。比如修改Bug,比如新增功能。这样做,可以一边做到Bug修改、添加功能,还能够不影响正常版本的上线。

然后在每个分支里的任务干完自己的活,再进行分支合并就可以了。

分支的有关操作

在本地,对于分支有如下这些操作:

git branch   			//查看本地分支
git branch 分支名 		  //创建本地分支
git checkout 分支名 	  //切换分支
git checkout -b 分支名   //创建并切换分支
git merge 分支名 		  //合并分支
git branch -d b1 		//删除分支时,需要做各种检查
git branch -D b1 		//不做任何检查,强制删除

对于在服务端上一些仓库的操作,大家可以去你所在的仓库手动操作。当然,如果你对这些命令感兴趣,也是可以再查阅有关资料的。

我们今天关于Git的介绍就到这里。

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...