Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git最初 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
集中式版本控制系统最大的毛病就是必须联网才能工作。
那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
因为git本就是为了管理linux而诞生的,所以linux系统中的yum源里自带git软件,直接yum安装即可
yum install git -y
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
mkdir demo ##建立一个目录
cd demo/
git init ##把这个目录变成Git可以管理的仓库
此时查看目录下的隐藏文件,会发现多了一个.git目录,这个目录是Git来跟踪管理版本库的,没事不要手动修改这个目录
里面的文件,不然改乱了就会把Git仓库给破坏了。
vim readme.txt ##编辑一个文件来进行测试
git status -s ##查看文件的状态
git add readme.txt ##将文件添加到暂存区,此时状态有一个A
git commit readne.txt -m "test" ##将文件添加到工作区,-m表示添加文件描述,不然就要进入交互页面填写
在上传到仓库后,再次修改文件,会在右边多出一个M,表示开始跟踪文件
把修改的文件再次add添加到暂存区,M会出现在左边
在暂存区时再次修改文件,会出现两个M
自动过滤一些临时文件或运行程序时产生的一些无用文件
vim .gitignore ##写入需要过滤的文件
工作区(Working Directory)
就是在电脑里能看到的目录,比如我们刚才建的demo文件夹就是一个工作区
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
重新编写一个文件来测试:
vim testfile ##修改时可以追加的方式修改数字,方便一会我们查看现象
test1
git add . ##将当前目录下的文件添加到暂存区
git commit testfile -m "v1" ##描述为v1
git log ##现实工作中可能改动会很复杂,这就需要我们通过查看日志来看对版本进行的操作
git log --pretty=oneline ##如果嫌信息太多不容易看,可以这样每个版本只输出一行信息
git reset --hard HEAD^ ##回退到上个版本
那我们想回到新版本怎么办呢,需要通过版本号来查看,
git log ##已经看不到v3的信息了
git relog ##可以查看我们的操作命令信息
git reset --hard f654799 ##通过指定版本号可以回到新版本