版本控制系统

集中化的版本控制系统

一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新

分布式的版本控制系统

客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来

Git的三种状态

Git 有三种状态,你的文件可能处于其中之一:

  1. 已提交(committed
  2. 已修改(modified
  3. 已暂存(staged

分别对应三个区域:

图1

  1. git directory(Repository):Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
  2. working Directory:工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  3. staging Area:暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作`‘索引’’,不过一般说法还是叫暂存区域。

基本的Git工作流程如下:

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

获取帮助的命令:

  1. git help 命令名称
  2. git 命令名称 --help
  3. man git-命令名称

文件状态

请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

图2

常用命令

  • git status:查看工作目录的状态
  • git add 文件名:将文件添加到暂存区。暂存区就是下次要提交的文件列表。
  • git commit -m '更新消息':提交到本地仓库
  • git log:查看所有的历史记录
  • git checkout -- 文件名:丢弃工作目录的改变
  • git diff:查看当前工作目录和暂存区快照之间的差异
    1. git diff    比较未暂存和已暂存之间的差异
    2. git diff --staged  比较已暂存和已提交之间的差异
  • git rm:移除文件
    1. git rm 文件名:从暂存区中删除,并删除工作目录中的文件
    2. git rm --cached 文件名:只是从暂存区中删除,不会删除工作目录中的文件
  • git reset:撤销操作
  • git push 远程服务器名称 分支名称:推送到远程仓库,一般使用git push origin master