Git.版本控制工具

306 阅读5分钟

一.简介

1.版本控制

  • 版本控制:对当前版本多个版本进行管控

    维护工程蓝图的是标准做法,记录版本的变化是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。
    
  • 学习原因:没有版本控制会出现多个问题

     备份多个版本,浪费存储空间,花费时间长。
     难以恢复至以前的历史版本,容易引发BUG,解决代码冲突困难。
     难于追溯问题代码的修改人和修改时间、修改内容、日志信息。
     项目升级,版本发布困难。
     无法进行权限控制。 比如 测试人员:只读;开发人员:模块权限。
     开发团队在工作过程中无法多条生产线同时推进任务,效率慢。
    
  • 控制路线

    • 集中式控制流程:电脑连接中央服务器,克隆代码到本地(共同开发),修改发送到中央服务器(联网才能工作,中央服务器损坏则数据都丢失)
    • 分布式:安全性较高,每个人都有自己的版本库,不需要联网,两个电脑可以相互推送,一个丢失另外一个还会保留,有一个电脑可以充当中央服务器的作用,只存在存储发送数据的作用

2.版本控制工具

  • 集中式版本控制工具: SVN、VSS、CVS
  • 分布式版本控制工具:Git、Mercurial、Bazaar……

二.Git 和 Svn不同

  • 差异

    * Git 只关心文件的整体是否发生变化。而SVN这类版本控制系统则只关心文件内容的具体差异。
    * svn这类系统每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。然而 Git 并不保存这些前后变化的差异数据
    * Git更像是把 变化的文件 作一个快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息(Hash值)并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。
    
  • Git优势

    * 分布式,强调个体
    * 公共服务器压力和数据量都不会太大
    * 离线工作,每个人的本地仓库,大部分操作在本地库完成,不需要联网(SVN做不到)
    *  分支操作非常快捷流畅
    *  可以吃后悔药, 尽可能添加数据而不是删除或修改数据(删除或修改不容易恢复,而每次添加一个版本,历史版本都有)
    * 速度快、灵活, 有能力高效管理类似 Linux
    * 内核一样的超大规模项目(速度和数据量)
    

三.git下载与安装

  • 下载:官网,下载所需版本https://git-scm.com/

      根据自己电脑版本下载对应版本
    

  • 安装Git

  • 使用Git

    • 打开命令行窗口

      安装Git后,在资源管理器的空白处,单击鼠标右键打开窗口,点击 Git Bash Here ,打开Git命令行窗口,在窗口中可直接使用Linux命令操作:

    • 初始化Git本地库

      命令: git init

      注意: .git 目录中存放的是本地库相关核心配置文件,也不要随意删除与修改
      	.git 目录仓库目录说明:
        hooks目录:脚本文件的目录。
        info目录:保存了不希望在 .gitignore 文件中管理的忽略模式的全局可执行文件
        logs目录:日志目录
        objects目录:存储所有数据内容
        refs目录:存储指向数据(分支)的提交对象的指针
        config文件包含了项目特有的配置选项
      	description文件仅供 GitWeb 程序使用
        HEAD文件指向当前分支
      
  • 本地仓库代码推送到远程仓库的方式

     如何创建远程仓库?
      1. 注册github(代码托管平台)
      2. 创建远程仓库
          点击 + 号 创建 远程仓库 -》 仓库名称(英文) -》 对这个仓库的描述 -》 勾选创建README.md -》 点击按钮创建
    
      如何将远程仓库克隆下来?
          1. 复制仓库地址
          2. 回到桌面 -》 鼠标右建 》 点击git bash here -》 打开命令行工具
          3. 在命令行工具输入 git clone 仓库地址
          4. 远程仓库就克隆到本地了
          
      如何将本次仓库的代码推送到远程仓库?
          1. 把要上传的项目放到从远程仓库克隆到本地的仓库
          2. 在命令行工具输入 cd 本地仓库地址, 进入到克隆的仓库
          3. 将工作区(仓库)代码提交到暂存区
              git add .  提交所有文件
              git add "文件"  提价单个文件
          4. 将暂存区的代码提交到本地仓库
              git commit -m "本次提交的描述"
          5. 将本地仓库的代码推送到远程仓库
              git push  
    
  • git命令:

      git add 文件名 / .     说明: git add 文件名   表示我们是将单个文件提交到暂存区
                                  git add . 就表示将所有的文件提交到暂存取
      git commit -m "对本次提交的描述"    说明: git commit命令表示的是将暂存区的代码提交到本次仓库
                                              -m "" 这个表示的是对本次提交的描述,双引号里面写的是对本次提交的描述
      git push            说明: 将本地仓库的代码推送到远程仓库(代码托管平台)
      git clone "仓库地址"    说明: 将远程的仓库克隆到本地