首页 > 技术文章 > Git版本控制系统

datastart 2019-03-19 15:20 原文

一.为什么需要Git

 大家有没有这样一个感触,在做毕业论文或者整理文档时,是不是需要修改来修改去,备份来备份去做很多重复性工作呢?

 

 为了解决上述问题,推荐大家使用版本控制系统进行管理,有了这些系统管理我们就可以:

  • 自动生成备份
  • 知道改动的地方
  • 随时回滚

 常见的版本管理工具

 1.SVN:集中式的版本控制系统,只有一个中央数据数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者都无法使用SVN,无法进行提交或者备份文件

  

 2.Git:分布式版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git,当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库

  

二.Git安装配置

 系统环境:centos7 防火墙和selinux都关闭

 安装git:yum -y install git

 

 Git全局配置:

 git config --global user.name "wh"   #配置git使用用户

 git config --global user.email "XXXX@qq.com"   #配置git使用邮箱

 git config --global color.ui true    #语法高亮显示

 git config --list    #查看全局配置

 

 初始化GIT工作目录:

 mkdir  git_data   /  cd git_data  /  git  init  #初始化  /  git status   #查看工作区状态

 

 注意git在初始化之后会生成一些存放暂存区域的目录文件(.git):

 

三.Git常规使用

 1.创建数据-提交数据

  touch  README  /  git status  /  git add README  / git status  /  git commit -m "first commit README"  #git  commit 提交暂存文件至版本库

  

  通过git log  /  git log --oneline可以查看我们提交日志:

  

  这里我们在通过一张图来对比git_data目录的一大家子之间的关系:

  

 2.GIT COMMIT  -A参数

  。 添加新文件

  git   add  *  添加到暂存区域

  git  commit  提交git仓库 -m 后面接上注释信息,内容关于本次提交的说明,方便自己或他人查看修改或删除原有文件

  常规方法:

  git   add  *

  git  commit

  简便方法:

  git   commit  -a  -m  “注释信息”   -a 表示直接提交

 3.删除暂存区数据

  没有添加到暂存区的数据直接rm删除即可。

  已经添加到暂存区的数据:git  rm  --cached  database  #将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件)

  git  rm  -f  database   #将文件数据从git暂存区和工作目录一起删除

 4.重命名暂存区数据

  没有添加到暂存区的数据直接mv 改名即可

  已经添加到暂存区数据:git  mv  data  test

  

 5.查看历史记录

1 git log   #→查看提交历史记录
2 git log -2   #→查看最近几条记录
3 git log -p -1  #→-p显示每次提交的内容差异,例如仅查看最近一次差异
4 git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息
5 git log --pretty=oneline  #→--pretty根据不同的格式展示提交的历史信息
6 git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录
7 git log --pretty=fomat:"%h %cn"  #→查看当前所有提交记录的简短SHA-1哈希字串与提交者的姓名,其他格式见备注。
查看历史记录

 6.还原历史数据

  Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,

  故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD^,

  上上一个版本则会叫做HEAD^^,当然一般会用HEAD~5来表示往上数第五个提交版本。
  git reset --hard HEAD^  #→还原历史提交版本上一次
  git reset --hard 3de15d4 #→找到历史还原点的SHA-1值后,就可以还原(值不写全,系统会自动匹配)

 7.还原未来数据

  什么是未来数据?就是你还原到历史数据了,但是你后悔了,想撤销更改,但是git log已经找不到这个版本了。
  git reflog  #→查看未来历史更新点

  

 8.标签的使用

  前面回滚使用的是一串字符串,又长又难记。
  git tag v1.0   #→当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。
  git tag          #→查看当前所有的标签
  git show v1.0   #→查看当前1.0版本的详细信息
  git tag v1.2 -m "version 1.2 release is test"  #→创建带有说明的标签,-a指定标签名字,-m指定说明文字
  git tag -d v1.0   #→我们为同一个提交版本设置了两次标签,删除之前的v1.0
  [root@centos7 git_data]# git reset --hard 0bdf2e7
  HEAD is now at 0bdf2e7 modified README file
  [root@centos7 git_data]# git reset --hard V1.0
  HEAD is now at a66370a add oldboy dir

 9.对比数据

  git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改后,再把它提交到仓库就放⼼多了。
  git diff README

四.分支结构

 1.概念描述

  在实际的项目开发中,尽量保证master分支稳定,仅用于发布新版本,平时不要随便直接修改里面的数据文件。
       那在哪干活呢?干活都在dev分支上。每个人从dev分支创建自己个人分支,开发完合并到dev分支,最后dev分支合并到master分支。
  所以团队的合作分支看起来会像下图那样:

  

 2.创建分支

  git branch linux    #→创建分支
  git checkout linux  #→切换分支
  git branch   #→查看当前分支情况,当前分支前有*号
  测试在linux分支修改文件并提交到git仓库,最后切换回master分支,你会发现什么呢?

 3.合并分支

  想把linux的工作成果合并到master分支上
  先切换到master分支
  git merge linux  #→合并Linux分支至master
  查看合并的文件
  git branch -d linux #→确认合并完成后,可以放心地删除Linux分支。

  

 4.分支冲突

  同时修改master和linux分支的同一个文件并提及,最后merge,查看合并结果如何解决?

  需要手动修改冲突文件并在此commit即可。


 

推荐阅读