现在的位置: 首页 > 综合 > 正文

Git使用简明教程

2013年01月27日 ⁄ 综合 ⁄ 共 5176字 ⁄ 字号 评论关闭

GIT ­——傻瓜跟踪器 
使用文档

 

GIT ——傻瓜跟踪器... 1

一git的使用目的... 1

1、git简介... 1

2、Git 官方文档:... 2

3、Git的作用:... 2

二、git的使用过程... 2

1、Git工作流程:... 2

2、git工作举例:... 3

三、git基础命令... 4

1、创建一个版本库:git-init-db. 4

2、植入内容跟踪信息:git-add. 6

3、提交内容到版本库:git-commit 7

4、查看当前的工作:git-diff 7

5、管理分支:git-branch. 8

6、查看项目的发展变化和比较差异... 9

7、合并两个分支:git-merge. 12

8、逆转与恢复:git-reset 14

9、标定版本... 19

10、合并外部工作... 19

11、通过电子邮件交换工作... 21

12、用 Git 协同工作... 22

13、为版本库打包... 25

14、将工作捆绑到一起... 27

15、管理版本库... 29

16、项目开发的模式推介... 32

四、目录索引:... 35

一git的使用目的
1、git简介

Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发,例如:wine, U-boot 等,详情看http://www.kernel.org/git 作为开源自由原教旨主义项目,Git
没有对版本库的浏览和修改做任何的权限限制。它适用于 Linux / Unix 和 Windows 平台。

2、Git 官方文档:

Tutorial, core-tutorial 和 Everyday
GIT


3、Git的作用:

同步两台机器的文档、有效管理代码、查看代码修改情况和作为项目备份使用。


4、Git的安装:

1)在线安装:

#sudo aptitude install git git-core git-doc git-gitk

2)下载安装:

下载git-1.7.6.tar压缩包

进入解压后的目录

使用命令:

#.configure

#make

#make install

比较这两种安装方法,第二种方法只可以使用git相关命令,但是没有提供在线帮助查询。需要在线帮助的话,需要使用第一种安装方法。


二、git的使用过程
1、Git工作流程:


2、git工作举例:
1)一个项目开发过程:

例如:一个开源项目有项目负责1人A表示,4个分管模块组长g1,g2,g3,g4表示,20个程序员p1,p2,p3...。 
单某个程序员p1增加程序功能,而这个代码对应的组长是g1,经过g1功能可以进入项目并请求项目负责人A进入代码。 
则流程如下。 
1)p1克隆项目代码。git clone 
2)p1修改代码,测试,确认ok,然后commit到自己的本地仓库。git commit 
3)给分模块组长g1发email,请求添加功能。 
4)g1确认这个代码不错,可以进入代码。将代码加入自己的子项目或给p1权限进行push操作到自己的电脑上。 git push 
5)g1发email通知项目负责人添加功能。 
6)g1将自己的子模块最新代码push到自己的分支 git push  
7)项目负责人A进行合并分支操作,p1添加的代码进入项目。git merge

2)对于个人用来维护自己的代码则类似: 
例如: 
1)建立两个目录 (代码仓库、工作目录)
2)在自己d盘建立一个目录作为自己的代码仓库,比如说是d:/git,然后执行git init操作 。
3)在自己d盘建立一个目录作为自己的工作目录,比如说是d:/workspace,然后执行 git clone -l d:/git 。

4)然后进入workspace的git目录,把自己的项目存在这里,其中有 git add,git commit操作。 
5)觉得自己的代码可以了,git push origin master,这个时候你的项目代码进入仓库。 
6)建议你的git仓库建立别的分支,然后和master分支合并


三、git基础命令
1、创建一个版本库:git-init-db

创建一个 Git 版本库是很容易的,只要用命令 git-init-db 就可以了。现在我们来为本文的写作创建一个版本库:

$ mkdir gittutorcn

$ cd gittutorcn

$ git-init-db

git 将会作出以下的回应

defaulting to local storage area

这样,一个空的版本库就创建好了,并在当前目录中创建一个叫 .git 的子目录。你可以用 ls -a 查看一下,并请注意其中的三项内容:

·         一个叫 HEAD 的文件,我们现在来查看一下它的内容:

$ cat .git/HEAD

现在 HEAD 的内容应该是这样:

ref: refs/heads/master

我们可以看到,HEAD 文件中的内容其实只是包含了一个索引信息,并且,这个索引将总是指向你的项目中的当前开发分支。

·         一个叫 objects 的子目录,它包含了你的项目中的所有对象,我们不必直接地了解到这些对象内容,我们应该关心是存放在这些对象中的项目的数据。

Note

关于 git 对象的分类,以及 git 对象数据库的说明,请参看 [Discussion]

·         一个叫 refs 的子目录,它用来保存指向对象的索引。

具体地说,子目录 refs 包含着两个子目录叫 heads 和 tags,就像他们的名字所表达的意味一样:他们存放了不同的开发分支的头的索引, 或者是你用来标定版本的标签的索引。

请注意:master 是默认的分支,这也是为什么 .git/HEAD 创建的时候就指向 master 的原因,尽管目前它其实并不存在。 git 将假设你会在 master 上开始并展开你以后的工作,除非你自己创建你自己的分支。

另外,这只是一个约定俗成的习惯而已,实际上你可以将你的工作分支叫任何名字,而不必在版本库中一定要有一个叫 master 的分支,尽管很多 git 工具都认为 master 分支是存在的。

现在已经创建好了一个 git 版本库,但是它是空的,还不能做任何事情,下一步就是怎么向版本库植入数据了。


2、植入内容跟踪信息:git-add

为了简明起见,我们创建两个文件作为练习:

$ echo "Hello world" > hello

$ echo "Silly example" > example

我们再用 git-add 命令将这两个文件加入到版本库文件索引当中:

$ git-add hello example

git-add 实际上是个脚本命令,它是对 git 内核命令 git-update-index 的调用。因此上面的命令和下面的命令其实是等价的:

$ git-update-index --add hello example

如果你要将某个文件从 git 的目录跟踪系统中清除出去,同样可以用 git-update-index 命令。例如:

$ git-update-index --force-remove foo.c

Note

git-add 可以将某个目录下的所有内容全都纳入内容跟踪之下,例如: git-add ./path/to/your/wanted 。但是在这样做之前,应该注意先将一些我们不希望跟踪的文件清理掉,例如,gcc 编译出来的 *.o 文件,vim 的交换文件 .*.swp 之类。

应该建立一个清晰的概念就是,git-add 和 git-update-index 只是刷新了 git 的跟踪信息,hello 和 example 这两个文件中的内容并没有提交到 git 的内容跟踪范畴之内。


3、提交内容到版本库:git-commit

既然我们刷新了 Git 的跟踪信息,现在我们看看版本库的状态:

$ git-status

我们能看到 git 的状态提示:

#

# Initial commit

#

#

# Updated but not checked in:

#   (will commit)

#

#       new file: example

#       new file: hello

#

提示信息告诉我们版本库中加入了两个新的文件,并且 git 提示我们提交这些文件,我们可以通过 git-commit 命令来提交:

$ git-commit -m "Initial commit of gittutor reposistory"


4、查看当前的工作:git-diff

git-diff 命令将比较当前的工作目录和版本库数据库中的差异。现在我们编辑一些文件来体验一下 git 的跟踪功能。

$ echo "It's a new day for git" >> hello

我们再来比较一下,当前的工作目录和版本库中的数据的差别。

$ git-diff

差异将以典型的 patch 方式表示出来:

diff --git a/hello b/hello

index a5c1966..bd9212c 100644

--- a/hello

+++ b/hello

@@ -1 +1,2 @@

 Hello, world

+It's a new day for git

此时,我们可以再次使用组合命令 git-update-index 和 git-commit 将我们的工作提交到版本库中。

$ git-update-index hello

$ git-commit -m "new day for git"

实际上,如果要提交的文件都是已经纳入 git 版本库的文件,那么不必为这些文件都应用 git-update-index 命令之后再进行提交,下面的命令更简捷并且和上面的命令是等价的。

$ git-commit -a -m "new day for git"


5、管理分支:git-branch

直至现在为止,我们的项目版本库一直都是只有一个分支 master。在 git 版本库中创建分支的成本几乎为零,所以,不必吝啬多创建几个分支。下面列举一些常见的分支策略,仅供大家参考:

·         创建一个属于自己的个人工作分支,以避免对主分支 master 造成太多的干扰,也方便与他人交流协作。

·         当进行高风险的工作时,创建一个试验性的分支,扔掉一个烂摊子总比收拾一个烂摊子好得多。

·         合并别人的工作的时候,最好是创建一个临时的分支,关于如何用临时分支合并别人的工作的技巧,将会在后面讲述。


1)创建分支

下面的命令将创建我自己的工作分支,名叫 robin,并且将以后的工作转移到这个分支上开展。

$ git-branch robin

$ git-checkout robin


2)删除分支

要删除版本库中的某个分支,使用 git-branch -D 命令就可以了,例如:

$ git-branch -D branch-name


6、查看项目的发展变化和比较差异

这一节介绍几个查看项目的版本库的发展变化以及比较差异的很有用的命令:

git-show-branch

git-diff

git-whatchanged

 

我们现在为 robin, master 两个分支都增加一些内容。

$ git-checkout robin

$ echo "Work, work, workd" >> hello

$ git-commit -m "Some workd" -i hello

$ git-checkout master

$ echo "Play, play, play" >> hello

$ echo "Lots of fun" >> example

$ git-commit -m "Some fun" -i hello example

git-show-branch 命令可以使我们看到版本库中每个分支的世系发展状态,并且可以看到每次提交的内容是否已进入每个分支。

$ git-show-branch

这个命令让我们看到版本库的发展记录。

* [master] Some fun

 ! [robin] some work

--

*  [master] Some fun

 + [robin] some work

*+ [master^] a new day for git

譬如我们要查看世系标号为 master^ 和 robin 的版本的差异情况,我们可以使用这样的命令:

$ git-diff master^ robin

我们可以看到这两个版本的差异:

diff --git a/hello b/hello

index 263414f..cc44c73 100644

--- a/hello

+++ b/hello

@@ -1,2 +1,3 @@

 Hello World

 It's a new day for git

抱歉!评论已关闭.