首先从版本控制讲起:
###版本控制——
- 什么是版本控制(VCS,Version Control System)?
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
直白一点来说,就是记录了你对文件的更改信息,包括内容,时间,修改人等等。
- 为什么要进行版本控制?
打个比方,你在word上更改了一些内容,为了方便查看最原始的内容,你是不是要从新备份一下,于是你就“另存为“,然后再重新命名,为了方便你知道做了什么修改,你可能会在文件名中加入一些提示信息。
这一系列的过程是不是很麻烦,但是采用版本控制——
你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。
- 版本控制与git的关系?
git是一个分布式版本控制系统(Distributed Version Control System,简称 DVCS)。这就要从版本控制的发展历史说起,从最初的本地版本控制系统到集中化的版本控制系统,再到分布式版本控制系统。前两个控制系统都存在这样的问题——只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。
而分布式版本控制系统客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。更进一步,分布式版本控制系统可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。
###Git——
####Git中数据的三种状态
Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前
版本做了标记,使之包含在下次提交的快照中。
分别对应三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
####Git工作区
- Git 仓库目录:是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
- 工作目录:是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
- 暂存区域:是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’’,不过一般说法还是叫暂存区域。
####基本的 Git 工作流程如下:
- 在工作目录中修改文件。
- 暂存文件,将文件的快照放入暂存区域。
- 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
####用户信息
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
-
$ git config --global user.name “John Doe”
-
$ git config --global user.email johndoe@example.com
再次强调,如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。
####Git的使用
包活命令行和GUI两种形式,下面会主要介绍一些常用命令行:
项目 | 价格 |
---|---|
查看git配置 | git config --list |
获取帮助 | $ git help |
在现有目录中初始化仓库 | $ git init |
克隆现有的仓库 | $ git clone [url] |
检查当前文件状态 | $ git status |
跟踪新文件( 或者是添加内容到下一次提交中) | $ git add README |
查看已修改未暂存文件具体修改了什么地方 | $ git diff |
查看已暂存的将要添加到下次提交里的内容 | $ git diff --staged |
提交更新(先用 git status 看下,是不是都已暂存起来了) | $ git commit |
查看历史提交记录 | $ git log |
查看当前有哪些分支 | $ git branch |
创建一个名为feature的分支 | $ git checkout -b feature |
将所有修改添加到暂存区 | $ git add . |
参考链接:
1.https://git-scm.com/book/zh/v2
2.https://blog.csdn.net/javaandroid730/article/details/53522872