git简介:


Git是目前世界上最先进的分布式版本控制系统(VCS-Vetsion Control System)。可以将同一个文件在不同时间的修改结果保存到git仓库中,随时可以恢复到某个需要的版本进行查看。 具体功能有:

  1. 纪录文件的所有历史变化

  2. 随时可恢复到任何一个历史状态

  3. 多人协作开发或修改

  4. 恢复错误

  5. 多功能并行开发


git术语:

工作区(Working Directory):就是你在电脑里能看到的目录,比如我的/pro文件夹就是一个工作区。

版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master .


我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。


git基本命令的使用:             

安装git , 在Linux系统中是自带git软件的 

rpm  -q  git                   #查看git是否安装

yum  install  -y  git       #安装git软件

rpm  -qc  git                  #查看git的配置文件

  1. git  init                                                                 #初始化git , 创建git仓库

  2. git  config  --global  user.name  '用户名'          #设置git用户信息

  3. git  config  --global  user.mail   "用户邮箱"      #设置git用户邮箱

  4. git  status                                                            #查看git状态

  5. git  add  文件                                                       #将文件添加到缓存区中 , 对文件进行跟踪

  6. git  commit  -m   '提交版本备注信息'                 #提交当前版本 并  备注当前版本信息

  7. git  log                                                                 #查看git日志

  8. git  checkout  版本hash值                                  #切换版本

git  --help                 #查看帮助

git  help  config        #查看特点的帮助


实例:

#目标:

1、创建一个项目目录/gg

2、设置git的全局参数

3、用git对目录中的文件版本进行管理:初始化git数据

4、管理工作如下:(生成文件、提交版本、恢复)

      a、创建新文件

      b、用git将文件添加到git的缓存区

      c、用git提交当前版本,并查看git状态和日志

      d、再次在/gg目录中创建一个文件,参考b、c步骤的步骤处理新添加的文件

      e、再次执行d的操作。

      f、删除其中一个文件,将删除操作提交保存到版本信息中,查看git状态和日志。

      g、用git恢复到第一次保存的版本,用ls查看目录中有哪些文件。

      k、查看git日志文件,恢复到my.txt第3次保存的版本,查看my.txt文件内容。


实验操作步骤:

先安装git , 安装好后初始化一个新git仓库

创建一个文件夹(或使用已有文件夹)

mkdir  /gg                  #创建一个/gg目录

cd  /gg                        #进入到/gg目录中

git  init                        #初始化git , 创建git仓库

ls  -a                            #查看/gg隐藏文件 , 发现有.git则初始化成功

image.png


进行一些基本信息设置(该步骤在创建好的目录中设置全局)

git  config  --global  user.name  "user"                     #设置git的全局用户

git  config  --global  user.mail   "user@qq.com"      #设置git用户的邮箱

git  config  --list                                                          #查看设置

例如:设置了一个gg用户 , 邮箱为gg@qq.com

image.png


在/gg目录中创建一些文件 , 例如创建a1.txt , a2.txt , a3.txt这些文件

image.png


用git将文件添加到git缓存区中 , 并查看状态和git日志

image.png


提交当前版本内容 , 备注为"file_v1"

image.png


再在创建一个a4.txt , 将a4.txt添加到git缓存区中 , 再提交该版本备注为"file_v2"

image.png


此时删除文件a1.txt和a2.txt文件 , 并执行之前的操作

image.png

image.png


查看三次版本的日志文件 , 并切换到第一次的版本中

image.png


查看版本1的内容 , 看看是否切换成功

image.png


由上图可以看出切换成功 , 再次切换到版本3 , 看看目录的中存在哪些文件

image.png


到此实验结束 , git的使用也到此为止 !!




 码云的简单使用


码云是国内的GitHub平台 , 也是常用的git远程仓库 , 远程仓库要不使用现有的git网络仓库服务(GitHub , 码云等平台) , 要不就搭建自己的git仓库 , 在这里主要讲码云的使用 , 以及搭建自己的git仓库


码云的官方网址 :https://gitee.com/ 

首先我们应该在码云官网注册一个账号 , 这里不做解释 ; 注册好账号后登录码云平台

第一步 : 在码云平台上创建一个网络仓库(项目)

在左上角处可以看到如下图所示:

image.png

image.png

点击创建 , 进入以下页面 ,复制仓库网址

image.png

上面复制的图片为https的那个网址 , 复制好之后 , 在Linux系统中创建一个文件(/20190318) , 命令如下;

image.png

进入到此目录 , ls查看一下当前文件

image.png

对当前目录进行点操作 , 比如添加几个文件 , 将/etc/hosts*复制到当前目录中 , 如图:

image.png

此时查看一下git的状态 , 并添加需要追踪的文件 

image.png

将当前文件版本提交至码云 (git push)

image.png

此时当前版本已经同步到了码云上面 , 我们可以在码云上面看看文件是否同步

image.png

同理再作做一次修改 , 再次把版本提交到码云上面去

image.png

删除文件后将版本二提交至码云

image.png

此时 , 再次查看码云上的文件 , 发现码云和Linux系统中的文件一样 , 被删除的两个文件都不见了


image.png


由于每次提交都需要输入用户名和密码 , 这样不仅不方便 , 相对来说也不是安全 , 所以在码云上可以上传公钥 , 实现免密码提交同步

只需在本地创建密钥 , 把公钥上传至码云即可实现 , 首先生成密钥

image.png

上传公钥至码云上面:

右上角点击图标 , 再点击设置:

image.png

进入之后 , 左边会有一个安全设置 , 点击ssh公钥

image.png

上传公钥(生成的公钥在/root/.ssh/di_rsa.pub文件中 , 把里面的文件复制即可) 如图: 

image.png

点击确定 , 提示你输入密码(码云用户密码) ,输入密码后,出现以下界面,会产生指纹,如图:

image.png

成功上传密钥后 , 再次创建一个文件 , 用git  clone 将仓库中的文件下载过来

image.png

提交修改后的当前版本至码云上面 , 成功提交(免密提交)

image.png

再次在码云上验证文件是否同步

image.png

此时仓库中多了a1~a5这5个txt文件 , 同步成功 !!!




 git分支管理


在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支(即master)。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。


查看分支:git  branch •说明:默认主分支为master 

创建分支:git  branch   分支名 

取出分支版本:git   chkeckout  -b  分支名   

说明:git  checkout  -b表示创建并切换到分支


实例:

接着上面码云的实验创建分支

image.png

上传之后 , 在码云上验证

image.png

image.png

git   merge   dev     合并dev分支到master主分支中 

git   push   origin   master •git   push origin  :dev    删除远程的dev分支



 搭建本地git hub服务器


拓扑图:

系统centos7:192.168.11.11(GitHub服务器) , 192.168.11.12(客户端)


在192.168.11.11(服务器)操作过程:

  1. 安装:yun  install  -y  git

  2. 创建文件:mkdir  -pv  /srv  

  3. 进入/srv目录:cd  /srv

  4. 创建git裸库git  init  --bare  sample.git

  5. 创建git用户 , 密码设置为git : useradd  git  passwd  git

  6. 修改/srv目录的属主属组:chown  -Rv  git:git  /srv

服务配置完毕


在192.168.11.12(客户机)配置如下;

  1. 安装:yum  install  -y  git

  2. 创建目录: mkdir  -pv  /test

  3. 生成公钥:ssh-keygen

  4. 上传密钥:ssh-copy-id  git@192.168.11.11

  5. git  clone  git@192.168.11.11:/srv/sample.git

如果克隆成功 , 则说明git客户端配置成功


以上实例自行去实验 .