git版本控制之道
#第一章:Git的版本控制之道
版本控制系统(version control system, VCS) 可以帮助我们记录跟踪项目中的各文件内容的修改变化。它最简单的实现形式是:复制文件以备份,在备份文件的文件名中添加上时间和日期。
分布式版本控制系统(Distributed version control system, DVCS) 也是这样,它的主要目标仍然是帮助记录和跟踪项目中所做的修改。而它与传统的版本控制系统的区别在于,开发人员相互同步修改内容的方式不同。
本章内容如下:
这些论题都是围绕着版本库展开的。所以先从学习版本库开始。
##1.1 版本库
版本库(Repository)是版本控制系统用来存储所有历史数据的地方。大多数版本控制系统在版本库中存储各个文件的当前状态、历史修改记录、谁做的修改、以及修改的原因。 版本控制系统就好比是银行保险柜,而它保存的历史信息就好比对账单。每存入一笔存款时,或者用版本控制系统的行话来说,每当进行一次提交(commit)的时候,版本控制系统就会在“对账单”上添加一个条目,并且把提交的内容保存在版本库里。
##1.9 锁机制
#第二章:创建第一个项目
本章内容如下:
在git中创建版本库是很简单的。
prompt> mkdir mysite
prompt> cd mysite/
prompt> git init
Initialized empty Git repository in /home/mike/gittest/mysite/.git/
命令git init会创建一个.git目录。这个目录存放版本库的全部元数据。mysite目录作为工作目录树,存放从版本库检出的代码。
##2.2 代码修改
前面的操作已经创建了一个空版本库,现在该往里面添加文件了。现在我们创建一个名为index.html的文件,并添加标题文本为“Hello world”.详细内容如下:
prompt> cat > index.html
<html>
<body>
<h1>Hello World</h1>
</body>
</html>
创建了一个简单的HTML文件后,就可以开始跟踪版本了。我们会向这个文件不断添加内容。要想让git跟踪这个文件,须先让它知道这个文件要分两步走:首先使用git add 命令把该文件添加到版本哭的索引(index): 然后使用git commit命令提交。
prompt> git add index.html
prompt> git commit -m "add in hello world HTML"
[master (root-commit) 1f02c4f] add in hello world HTML
1 file changed, 5 insertions(+)
create mode 100644 index.html
文件或者文件列表可以作为git add命令的参数.git commit命令创建一个提交记录。提交记录是存储在版本的历史记录,每提交一次创建一个记录,并标记代码的演进。
第一个项目的版本库已经准备好,并且已经开始跟踪文件。下面开始学习怎样处理文件修改。这个HTML文件里面还没有<head>和
<html>
<head>
<title>Hello World in Git</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
修改完毕,git可以检测到文件被修改。命令git status会现实工作目录的状态,即当前的试图状态。
prompt> git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
分支是维护项目中并行历史记录的方法。创建并行历史记录当然非常好,但在真实的项目中该如何使用呢?实际应用中有两种分支比较有用:用来支持项目的不同发布版本的分支,以及用来支持一个特定功能的开发的分支,接下来我们将介绍第一种分支。
mysite项目代码现在几乎可以发布了,但是还要进行测试等工作。直到确认它达到了预期的功能和质量。而与此同时,借助分支,可以开始下一个版本的心功能的开发了。
分支可以为要发布的代码保留一份拷贝,所以无须停止正在开发的工作。创建分支的命令是git branch ,该命令需要两个参数:新分支名称和父分支名称。新创建的分支基于已经存在的父分支。
prompt> git branch RB_1.0 master
该命令从主分支(master branch)上创建一个叫RB_1.0的分支。主分支是git的默认分支
现在来做一些新的改动。这些改动不影响准备发布的代码。下面给“bio”页面添加一个链接。在<body>之前增加如下代码:
<ul>
<li><a href="bio.html">Biography</a></li>
</ul>
如下命令提交这些修改:
prompt> git commit -a
这是一块引用的内容
This is sure