Git原理与基本操作 | 青训营

103 阅读4分钟

1 什么是版本控制系统VCS

1.1 版本控制:最基本的功能

版本控制系统(Version Control System - VCS)最基本的功能是版本控制。所谓版本控制,意思就是在文件的修改历程中保留修改历史,让你可以方便地撤销之前对文件的修改操作。

1.2 主动提交:程序代码和普通文本的区别

VCS 和文本编辑器的撤销功能比起来,有一个很重要的区别是:程序代码的修改的生命周期非常长

1.3 多人合作的同步需求:中央仓库

代码可以一个人写,但更多的时候会是多个人共同开发。那么自然地,就需要有一个中央仓库作为代码的存储中心:所有人的改动都会上传到这里,所有人都能也都能看到和下载到别人上传的改动。

版本控制、主动提交、中央仓库这三个要素,共同构成了版本控制系统(VCS)的核心:开发团队中的每个人向中央仓库主动提交自己的改动和同步别人的改动,并在需要的时候查看和操作历史版本,这就是版本控制系统。

中央式版本控制系统……

2 什么是分布式版本控制系统(DVCS)

分布式 VCS (Distributed VCS / DVCS)和中央式的区别在于,分布式 VCS 除了中央仓库之外,还有本地仓库:团队中每一个成员的机器上都有一份本地仓库,这个仓库里包含了所有的版本历史,或者换句话说,每个人在自己的机器上就可以提交代码、查看历史,而无需联网和中央仓库交互——当然,取而代之的,你需要和本地仓库交互。

中央式 VCS 的中央仓库有两个主要功能:保存版本历史、同步团队代码。而在分布式 VCS 中,保存版本历史的工作转交到了每个团队成员的本地仓库中,中央仓库就只剩下了同步团队代码这一个主要任务。它的中央仓库依然也保存了历史版本,但这份历史版本更多的是作为团队间的同步中转站。

3 快速上手

已经有 Git 经验的可以跳过这一节

3.1 安装Git

git-scm.com/

3.2 新建远程仓库

github.com/

【New Repository】

3.3 把远程仓库取到本地

git clone '地址'
git log

3.4 自己写个提交试试

git status
git add .

解释一下 "stage" 这个词,这个词对我们中国人可能有一些理解难度。按我们英语课本上的内容来看,stage 是一个名词,它的意思是「舞台」。可是不论从词性还是词义,「舞台」都不太能解释 "stage" 或 "staging area" 的意思。实质上,Git 中的 stage 取自这个词的另一个意思:组织和准备某个事件。而 "staging area" 的意思也并不是「舞台区域」,而是「用来汇集物品或材料以备使用的区域」的意思。

所以 stage 这个词在 Git 里,是「集中收集改动以待提交」的意思;而 staging area ,就是一个「汇集待提交的文件改动的地方」。简称「暂存」和「暂存区」。至于 staged 表示「已暂存」,就不用再解释了吧?

git commit
git status
git push

3.5 小结

在这一节里,描述了 Git 的最基本的工作模型:

  1. 从 GitHub 把中央仓库 clone 到本地(使用命令: git clone)

  2. 把写完的代码提交(先用 git add 文件名 把文件添加到暂存区,再用 git commit 提交)

    • 在这个过程中,可以使用 git status 来随时查看工作目录的状态
    • 每个文件有 "changed / unstaged"(已修改), "staged"(已修改并暂存), "commited"(已提交) 三种状态,以及一种特殊状态 "untracked"(未跟踪)
  3. 提交一次或多次之后,把本地提交 push 到中央仓库(git push)

4 团队工作的基本工作模型

这节的内容,就是简单阐述一下团队合作中 Git 的基本工作模型。

小结:多人合作的基本工作模型 2.0 这样,就把刚才的那个「多人合作的基本工作模型」进行了改良:

  1. 写完所有的 commit 后,不用考虑中央仓库是否有新的提交,直接 push 就好
  2. 如果 push 失败,就用 pull 把本地仓库的提交和中央仓库的提交进行合并,然后再 push 一次

到此为止,这个工作模型已经是一个最简单的可用的工作模型了。一个小团队如果对版本管理没有什么要求的话,这个工作模型已经可以让团队用来合作开发了。