1.什么是 git?
1.1.如何理解git
git的最基本作用是版本控制
- 比如A写一个文档,一直不符号老板的条件,老板一直让A改,这时A在原文档上直接改,改来改去改到第八版了,一直不满意,最后老板说你这还不如第三版的好,A懵逼了,它自己也不知道第三版是什么了
- 比如B写一个文档,一直不符号老板的条件,老板一直让B改,B的会复制一下原文档,在副本上修改,改来改去改到第八版了,一直不满意,最后老板说你这还不如第三版的好,B就直接拷贝了第三版给客户发过去了。然后B的认为这次的事情完事了把其他没用的都删了,突然有一天老板说客户的意见和B第八版的相同,这时B也懵逼了,它自己也不知道第八版是什么了
- 来了个最聪明的人,会用git,他在本地建了一个版本库,每次老板让他修改,他就把之前的版本提交一下,并标明这版的主要特点,这样文件夹里就只有一个文档,每次老板说要哪个版本的,他就直接从版本库里恢复一下。
上面我们做的工作就是版本管理
1.2.版本管理
假设我们设计一个文档,以提交的次数记录版本号
“文档V1”
“文档V2”
“文档V3”
…
“文档V8”
随着文档的修改,有可能客户需要的反而是V2甚至是V1,因此,随着版本数量不断增多,无法记得版本与版本之间修改了什么,所以产生了 版本控制器
1.3.什么是版本控制器
所谓的版本控制器,就是可以让我们知道每一个文件的历史,以及它的发展过程的系统。
记录工程的每一次改动和版本迭代的一个管理系统,也便于多人协同。
版本控制器有很多,Git和SVN啊
目前最主流的版本控制器是 Git(开源),Git可以控制电脑上所有格式的文件,例如excel,dwg等,对于我们而言,Git最重要的就是管理软件开发项目中的源码文件。
注意:
所有版本控制系统,包括Git,只能跟踪文本文件的改动,eg:txt文件,网页,所有的程序代码等,版本控制系统可以告诉你每次的改动,比如在第3行家里一个单词“hello”,或者在第7行删了一个单词“Linux”,
但是图片视频等二进制文件,虽然也能由版本控制系统管理,但是无法跟踪文件的变化,只能判断出文件是否发生了变化,具体发生的改变是无法知道的。
2.git的诞生
- 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。
- Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?
- 事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!
- 你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。
- 不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。
- 安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。
- Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。
- 实际情况是这样的:Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。
- Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
- 历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。
有人就写了一些基于git来进行代码管理的网站,比如github,gitee
3.git安装
sudo yum install git
4.gitee三板斧使用
4.1.clone
我们可以去github上面,但是github有可能打不开,也很不稳定,所以不稳定
我们使用gitee来展示
我们想要把这个mycode.c上传到gitee的仓库里
首先打开gitee,登录注册
右上角点击我的仓库
我们新建一个仓库
按照下面这个设置即可
我们怎么使用它呢?
我们选择HTTP的那个网站,复制下来
我们应该先把远端仓库克隆下来
我们第一次克隆的时候,由于是http的协议,所以我们每次都要输入用户名密码
用户名:绑定邮箱的话就是邮箱,不然就是手机号
用户名密码:gitee的密码
这个就是我们克隆下来的zs_108仓库
我们进去看看
这个.git文件就是传说中的本地仓库
gitee上面也有一样的.git
不要对git里面的文件进行任何修改
4.2.add 和commit
我们现在要上传我们的代码,怎么办
我们把我们的代码拷贝到zs_108里
我们现在要做的很简单
commit后面必须带-m ,且后面的双引号里的内容不能乱写,必须写这个代码的相关信息
我们发现它报错了,我们按照它的要求(如下)
设置好了之后
再来
这个就完全没有任何问题了
4.3.push
我们还需要将准备好的代码提交到远端仓库里
我们去gitee上面看看
提交成功了
5.git的其他问题
1.提交记录
这个指令可以查看我们的提交记录
包括一些个人信息
我们的提交信息不要随便乱写哦
2.提交状态
当这个克隆的仓库里所有东西是在远端仓库的
git status就会显示nothing to commit
否则
就如下面所示
(test_git_code早已提交)
3..gitignore文件
凡是以上面这些为后缀的文件,都不会被添加到远端仓库
一定不能忘记前面的*号
4.git的基本配置
我们第一次使用git的时候会有下面这个情况
我们发现它报错了,我们按照它的要求(如下)
按照它提示的运行一下即可
git首次使用需要配置邮箱和用户名 ——本质是为了为代码进行复原
这个仅仅是git的入门,还有很多知识需要大家去学习