GIT(分布式版本控制系统)入门

什么是GIT

  Git是目前世界上最先进的分布式版本控制系统(没有之一)。
  
  那么问题来了,什么是分布式版本控制系统
  
  这里举个例子,你需要编写一个文档,这个文档呢财务部需要,产品部也需要。那么你要怎么写呢。无非这样做,先写一部分部门的材料,保存下来一个版本,交给他们,再添加一部分材料保存另一个版本交给另外的部门。如果涉及到多个部门,可能你需要写多个版本,都保存下来。然而,电脑桌面乱糟糟的,却又不敢删除任何一个版本。
  这并不是最糟糕的。最糟糕的是这么多部门又给你返回了他们各自部门的信息。你还要将它们统一到一个版本里。
  这时你会不会希望有一个管理系统不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?
  这里写图片描述
  
  就像这样一样。
  这就是分布式版本控制系统的功能。

分布式版本控制系统有什么优点

  说到它的优点不得不提到的是另外一种控制系统——集中式版本控制系统。
  CVS和SVN都是集中式的版本控制系统,GIT是分布式。那么什么是集中式,什么是分布式呢?
  集中式,顾名思义就是将资源集中起来。每次修改完文件上传到中央服务器。当需要修改时,再从中央服务器下载下来。这也暴露出它的一个弊端,必须需要网络才能从中央服务器下载下来。
  分布式,去中心化,GIT在我们每个人的电脑上都有一个独立完整的库,我们平时上传代码的中央服务器和我们电脑上的库的内容基本上完全一样。去中心化 意味着没有权威,没有主力,人人平等。在github 上有个fork功能。你可以fork任何人的项目,按照自己喜好修改项目。或是将自己修改的内容发给原作者,将你的功能更新到他的项目里面去。这就是分布式。

安装

官方下载:https://git-scm.com/downloads

使用

  在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录在该目录中发生的所有更新。
  在目标文件下,打开git。通过git init 命令把这个目录变成Git可以管理的仓库:
这时文件里会生成一个.git 的目录。这个目录是隐藏的。用ls -ah 命令就可以看见。
  这里写图片描述

  Git是一个快照每次提交后系统都会记录一下这次操作的相关信息
这里写图片描述

  每次更新版本每个版本都会对应一个版本号。

git命令

  git init: 创建一个本地仓库

  git add read.txt: 把本地文件(工作区)添加到缓存区

  git add. : 把本地所以文件全部添加到缓存区

  git commit -m 'describe message' :真正把缓存区的所有文件都添加到仓库上

  git status: 查看git仓库当前的状态

  git diff read.txt: 查看文件具体修改了哪里

  git log:查看最近到最远提交到仓库的文件信息(一串数字为特有的时间序列id 可以根据它进行版本前后回滚)

  git reset --hard HEAD^: 回退到上一次 commit的时候

  git reset --hard bdeacd: 版本前进 只能根据 id进行前进(id只写出前六位就好了)

  git reflog:查看每次操作仓库内的信息(commit) 这样的话当黑窗口没了的时候,也可以查询具体操作信息,进行版本回退或者前进!

  git checkout -- read.txt: 工作区恢复到最近一次的commit或者add

  git rm read.txt: 删除某一个文件
 
  git branch dev: 创建dev分支

  git checkout dev: 切换到dev分支上开发

  git branch:查看所有分支

  git branh -d dev:删除分支 (-D 强制删除)

  git merge dev: 合并分支
  
  git stash:保存工作现场;

  git pop:恢复工作现场;      如果在开发的过程中发现主分支master上右bug但正在开发的dev分支没开发完怎们办,切记一点不要在master分支上直接开发,保存dev工作现场回到master上创建解决bug的分支如issue分支解决完回到master分支把issue分支合并再回到dev恢复现场