Git版本控制系统(一)

Git是目前世界上最先进的分布式版本控制系统。

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就会有些不适用

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

一、部署Git:

1、在windows上如何安装Git:

(1)图标组件(Addition icons) : 选择是否创建桌面快捷方式。

(2)桌面浏览(Windows Explorer integration) : 浏览源码的方法,使用bash 或者 使用Git GUI工具。

(3)关联配置文件 : 是否关联 git 配置文件, 该配置文件主要显示文本编辑器的样式。

(4)关联shell脚本文件 : 是否关联Bash命令行执行的脚本文件。

(5)使用TrueType编码 : 在命令行中是否使用TruthType编码, 该编码是微软和苹果公司制定的通用编码。

选择使用什么样的命令行工具,一般情况下我们默认使用Git Bash即可:

(1)Git自带:使用Git自带的Git Bash命令行工具。

(2)系统自带CMD:使用Windows系统的命令行工具。

(3)二者都有:上面二者同时配置,但是注意,这样会将windows中的find.exe 和 sort.exe工具覆盖,如果不懂这些尽量不要选择。

这样,我们的Git客户端就下载并安装完成了。

安装完成后执行如下两个命令配置用户名邮箱,因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。

注意:git config  –global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

二、创建版本库:

什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。

创建版本库的命令如下:

git  init   gongguan 表示创建一个版本库目录gongguan     //方法一

cd   gongguan    git init      先进入gongguan目录  然后执行git init表示将当前文件夹改变成版本库 //方法二

创建成功后gongguan文件夹下多了一个隐藏目录.git , 这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了

注意:所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了什么,版本控制也不知道。

三、git使用演示:

1、在版本库gongguan目录下新建文件gong.txt并写入内容11111111, 可以直接使用命令行的方式来创建文件,命令和linux命令相同,也支持vim命令

2、使用命令git  add gong.txt 添加到暂存区里,然后使用git commit 提交到仓库,提交完成后可以使用git status查看是否还有文件未提交

下图中的警告信息提示字符问题,因为git是基于linux开发因此在windows上会有字符问题出现

此时在gong.txt中在写入一段内容,然后再次使用git status查看,可以看到提示已经改变但是并未提交。

如果想知道修改了哪些内容可以使用命令 git  diff  gong.txt

git   commit  -m “gongtwo”   //第二次提交(-m后面名字可自定义)

git还有一个图形界面可以看到提交后的情况,在命令行输入gitk命令即可看到,还可以看到修改后的内容(点击第二次提交的可看到下方的新增加的内容)

git  log  可以看到最近的提交情况  由近及远

四、 Git如何进行版本回退 ?

通过版本号方式进行回退:(推荐) ,还有其他方法,暂时不考虑。

通过命令 git  reflog 查看版本号  ,从下图可以看出,当前的版本在gongfirst位置,可以看下前面显示的master标识即可,现在要恢复回gongtwo版本,使用命令git reset –hard bba6052,bba6052为gongtwo的标识符,如图:

如果想回退到gongfitst版本 ,同样通过版本号方式,如图:

五、理解工作区与暂存区的区别?

工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

使用Git提交文件到版本库有两步:

  • 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
  • 第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

六、Git多个文件提交?

在gong.txt中再添加一段内容,并新建一个文件,如图:

将两个文件都添加到暂存区中,然后使用git  status查看状态

使用 git commit一次性提交上去

七、Git撤销修改以及删除文件 ?

如果现在在文件gong.txt中增加一行内容abcdefg

在我未提交之前,我发现添加abcdefg内容有误,所以我得马上恢复以前的版本,现在我可以有如下几种方法可以做修改:

第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。

第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset  –hard 版本号

但是现在我不想使用上面的2种方法,我想直接想使用撤销命令该如何操作呢?首先在做撤销之前,我们可以先用 git status 查看下当前的状态。如下所示:

可以发现,Git会告诉你,git checkout  — file 可以丢弃工作区的修改

执行命令 git  checkout  —  gong.txt  注意有空格

命令 git checkout — readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,这里有2种情况,如下:

  • readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
  • 另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。

对于第二种情况,假如现在我对gong.txt添加一行 内容为9999999999  git添加到暂存区后在添加一段内容0000000000

使用git checkout  —   gong.txt 撤回, 如图:

现在版本库中有一个文件guan.txt  现在要删除它可以执行rm  guan.txt 或者手动在目录下删除,删除之后如果还没有执行commit命令那么也可以通过git  checkout  — guan.txt 来恢复

至此本地搭建Git版本控制系统完成。

总结:

1、无论windows还是linux安装完git后都要执行如下命令设置用户名以及邮箱,作为唯一标识

git config  --global user.name "gongguan"
git config --global user.email "12345678@qq.com"
git config -l      //查看配置
git config --global --edit   //打开全局配置进行修改

2、创建版本库,命令如下:

git init gongguan         //方法一
cd gongguan && git init   //方法二

3、提交到本地仓库:

cd gongguan                  //进入版本库目录
git add gong.txt / git add . //添加单个文件gong.txt或者添加版本库目录下全部文件到暂存区
git commit -m "first commit" //提交到本地仓库
git status                   //查看是否有文件还没提交
git diff gong.txt            //查看修改了什么

标签