1.Git简介
产生背景
-
Git是目前世界上最先进的分布式版本控制系统。
-
Linus在1991年创建了开源的Linux,经过世界各地热心的志愿者参与Linux系统的开发和维护,Linux已成为世界上最大的服务器系统软件了。由于Linux由开发者共同维护,在2002年以前,他们把源文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!你会不会产生这样的疑问:这不费时费力吗?当时不是有CVS、SVN这些免费的版本控制系统吗?为什么不把Linux放到版本控制系统里呢?那是因为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的两大特点
- 版本控制:可以解决多人同时开发的代码问题,从此,也可以解决找回历史代码 的问题。
- 分布式:Git是分布式版本控制系统,从此,同一个 Git 仓库,从此,可以分布到不同 的机器上。首先找一台电脑充当服务器的角色,从此,每天 24小时开机,从此,其他每 个人都从这个 “ 服务器 ” 仓库克隆一份到自己的电脑上,从此,并且各自把各自的提交推送到服务器仓库里,从此,也从服务器仓库中拉取别人的提交。可以自己 搭建这台服务器,从此,也可以使用 GitHub 网站。
2.安装与配置
(1)、Git安装命令如下:
sudo apt-get install git
由于我之前安装过了,信息打印输出可能会和你们有所出入,这个不要担心。
(2)、运行如下命令可以查看Git信息:
git
3.创建一个版本库
(1)、新建一个目录git_test,在git_test目录下创建一个版本库:
mkdir git_test #创建一个目录
cd git_test #打开这个目录
git init #在该目录下创建一个git版本库
可以看到在git_test目录下创建了一个.git隐藏目录,这个就是版本库目录。
4.版本创建与回退
4.1使用方法
(1)、使用vim在git_test目录下创建一个test.txt,写入内容如下:
(2)、创建一个版本命令如下:
git add test.txt #添加文件到暂存区,具体原理后面会讲到
git commit -m '版本1' #提交代码到仓库,配置提交信息
(3)、查看版本记录:
git log
(4)、在test.txt中增加一行:
(5)、再次使用如下命令创建一个新的版本并查看版本记录:
git add test.txt
git commit -m '版本2'
git log
(6)、版本回退,可以使用如下命令:
git reset --hard HEAD^
其中 HEAD 表示当前最新版本,HEAD^^
表示当前版本的前前个版本,也可以使用 HEAD~ 1表示当前版本的前一个版本,HEAD~100 表示当前版本的前 100 版本。
执行完命令后使用git log查看版本记录,发现现在只能看到版本1的记录,cat test.txt 查看文件内容,现在只有一行,也就是第一个版本内容。
(7)、若想重新回到版本2,可以使用如下命令:
git reset --hard 版本号
那版本号怎么获取呢?当我们命令窗口没有关闭,可以浏览到之前git log 的记录,来获取版本号
然后复制版本2的版本号,执行命令
现在位于版本2,使用cat test.txt查看内容
(8)、若我们的命令行窗口关闭了,想重新回到版本2,该怎么办呢?
我们先回退到版本1,然后把窗口关闭,重新打开命令行窗口,使用git log命令发现找不到版本2的版本号。
我们就需要执行git reflog命令查看我们的操作记录。
git reflog
找到版本2的版本号,使用版本回退命令回退,然后查看test.txt的内容。