• Git版本控制系统


    一.为什么需要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即可。


  • 相关阅读:
    单调栈问题解析
    Linux进程状态切换
    Shell编程小例子
    Linux之shell编程
    树的遍历框架
    你真的会求1-100有多少个素数吗
    java实现LRU算法
    从上到下打印二叉树 III
    从上到下打印二叉树I
    模拟盘电路板调试过程中出现的问题
  • 原文地址:https://www.cnblogs.com/datastart/p/10558904.html
Copyright © 2020-2023  润新知