关于git的介绍

386 阅读5分钟

Git版本控制工具

学习版本控制的原因:

1.没有版本控制出现的问题

备份多个版本,浪费存储空间,花费时间长。

难以恢复至以前的历史版本,容易引发BUG,解决代码冲突困难。

难于追溯问题代码的修改人和修改时间、修改内容、日志信息。

项目升级,版本发布困难。

无法进行权限控制。 比如 测试人员:只读;开发人员:模块权限。

开发团队在工作过程中无法多条生产线同时推进任务,效率慢。

2.版本控制的简介

> 版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

3.版本控制工具

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

4.SVN介绍

简介:

  • SVN 属于集中式版本管理控制系统,服务器中保存了所有文件的不同版本,而协同工作人员通过连接svn服务器,提取出最新的文件,获取提交更新。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件CVS,在CVS的功能的基础上有很多的提升同时也能较好的解决CVS系统的一些不足。

SVN基本交互流程图

SVN缺点

  • 集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。但是相较于其优点而言,集中式版本控制工具缺点很明显:

    • 服务器单点故障

    • 必须连接在SVN服务器上,否则不能提交、对比、还原等

git与SVN记录具体差异

  • Git 和其他版本控制系统的主要差别在于,Git 只关心文件的整体是否发生变化。而SVN这类版本控制系统则

只关心文件内容的具体差异。

  • SVN这类系统每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。然而 Git 并不保存这些前后变化的差异数据。

  • 实际上,Git更像是把 变化的文件 作一个快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息(Hash值)并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。

git优势是什么

分布式,强调个体

公共服务器压力和数据量都不会太大

离线工作,每个人的本地仓库,大部分操作在本地库完成,不需要联网(SVN做不到)

分支操作非常快捷流畅(重点介绍)

可以吃后悔药, 尽可能添加数据而不是删除或修改数据(删除或修改不容易恢复,而每次添加一个版本,历史

版本都有)

速度快、灵活, 有能力高效管理类似 Linux

内核一样的超大规模项目(速度和数据量)

git安装

git本地工作区域

  • 对于任何一个文件,在 Git 内都只有三种区域:工作区,暂存区和本地仓库。

    • 工作区:表示新增或修改了某个文件,但还没有提交保存;

    • 暂存区:表示把已新增或修改的文件,放在下次提交时要保存的清单中;

    • 本地仓库:文件已经被安全地保存在本地仓库中了。

Git与代码托管平台

Git 与 GitHub比较

  • git

是一个版本管理工具 , 只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序,

比如你原来提交过的内容,后面虽然修改过,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误进行更改,进行还原。

是一个基于Git的远程代码托管平台(网站),可以在github上建立一个远程库,可以将本地库的代码提交到远程库,这样你的每次提交,别人也都可以看到你的代码,同时别人也可以帮你修改你的代码,这种开源的方式非常方便程序员之间的交流和 习。

代码托管平台

  • 局域网:

    • GitLab (可自行搭建)
  • 外网环境

    • GitHub
    • 码云

将本地仓库代码推送到远程仓库的方式:

Git命令操作

$ gin init

创建一个git本地仓库

$ git status:

用于查看工作区、暂存区的状态

$ git add 文件名 / .

说明: git add 文件名 表示我们是将单个文件提交到暂存区

$ git commit -m

"对本次提交的描述" 说明: git commit命令表示的是将暂存区的代码提交到本次仓库 -m "" 这个表示的是对本次提交的描述,双引号里面写的是对本次提交的描述

$ git push

说明: 将本地仓库的代码推送到远程仓库(代码托管平台)

$ git clone

"仓库地址" 说明: 将远程的仓库克隆到本地