steven

Git 中文教程

steven | 03 January, 2010 22:32

FROM http://www.bitsun.com/documents/gittutorcn.htm

介绍

Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus 是这样给我们介绍 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 版本,目前也没有这样的开发计划。

本文将以 Git 官方文档 Tutorial core-tutorialEveryday GIT 作为蓝本翻译整理,但是暂时去掉了对 Git 内部工作机制的阐述, 力求简明扼要,并加入了作者使用 Git 的过程中的一些心得体会,注意事项,以及更多的例子。 建议你最好通过你所使用的 Unix / Linux 发行版的安装包来安装 Git, 你可以在线浏览本文 ,也可以通过下面的命令来得到本文最新的版本库,并且通过后面的学习用 Git 作为工具参加到本文的创作中来。

$ git-clone http://www.bitsun.com/git/gittutorcn.git

创建一个版本库: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 包含着两个子目录叫 headstags, 就像他们的名字所表达的意味一样:他们存放了不同的开发分支的的索引, 或者是你用来标定版本的标签的索引。

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

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

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

植入内容跟踪信息: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-addgit-update-index 只是刷新了 git 的跟踪信息,hello 和 example 这两个文件中的内容并没有提交到 git 的内容跟踪范畴之内。

提交内容到版本库: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"

查看当前的工作: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-indexgit-commit 将我们的工作提交到版本库中。

$ git-update-index hello
$ git-commit -m "new day for git"

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

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

管理分支:git-branch

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

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

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

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

创建分支

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

$ git-branch robin
$ git-checkout robin

删除分支

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

$ git-branch -D branch-name

查看分支

运行下面的命令可以得到你当前工作目录的分支列表:

$ git-branch

如果你忘记了你现在工作在哪个分支上,运行下面的命令可以告诉你:

$ cat .git/HEAD 

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

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

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
+Work, work, work
Note
关于 GIT 版本世系编号的定义,请参看 git-rev-parse

我们现在再用 git-whatchanged 命令来看看 master 分支是怎么发展的。

$ git-checkout master
$ git-whatchanged 

diff-tree 1d2fa05... (from 3ecebc0...)
Author: Vortune.Robin 
Date:   Tue Mar 21 02:24:31 2006 +0800
Some fun
:100644 100644 f24c74a... 7f8b141... M  example
:100644 100644 263414f... 06fa6a2... M  hello
diff-tree 3ecebc0... (from 895f09a...)
Author: Vortune.Robin 
Date:   Tue Mar 21 02:17:23 2006 +0800
a new day for git
:100644 100644 557db03... 263414f... M  hello

从上面的内容中我们可以看到,在 robin 分支中的日志为 "Some work" 的内容, 并没有在 master 分支中出现。

合并两个分支:git-merge

既然我们为项目创建了不同的分支, 那么我们就要经常地将自己或者是别人在一个分支上的工作合并到其他的分支上去。 现在我们看看怎么将 robin 分支上的工作合并到 master 分支中。 现在转移我们当前的工作分支到 master,并且将 robin 分支上的工作合并进来。

$ git-checkout master
$ git-merge "Merge work in robin" HEAD robin
合并两个分支,还有一个更简便的方式,下面的命令和上面的命令是等价的。
$ git-checkout master
$ git-pull . robin

但是,此时 git 会出现合并冲突提示:

Trying really trivial in-index merge...
fatal: Merge requires file-level merging
Nope.
Merging HEAD with d2659fcf690ec693c04c82b03202fc5530d50960
Merging:
1d2fa05b13b63e39f621d8ee911817df0662d9b7 Some fun
d2659fcf690ec693c04c82b03202fc5530d50960 some work
found 1 common ancestor(s):
3ecebc0cb4894a33208dfa7c7c6fc8b5f9da0eda a new day for git
Auto-merging hello
CONFLICT (content): Merge conflict in hello
Automatic merge failed; fix up by hand

git 的提示指出,在合并作用于文件 hello 的 'Some fun' 和 'some work' 这两个对象时有冲突, 具体通俗点说,就是在 master, robin 这两个分支中的 hello 文件的某些相同的行中的内容不一样。 我们需要手动解决这些冲突,现在先让我们看看现在的 hello 文件中的内容。

$ cat hello

此时的 hello 文件应是这样的,用过其他的版本控制系统的朋友应该很容易看出这个典型的冲突表示格式:

Hello World
It's a new day for git
<<<<<<< HEAD/hello
Play, play, play
=======
Work, work, work
>>>>>>> d2659fcf690ec693c04c82b03202fc5530d50960/hello

我们用编辑器将 hello 文件改为:

Hello World
It's a new day for git
Play, play, play
Work, work, work

现在可以将手动解决了冲突的文件提交了。

$ git-commit -i hello

以上是典型的两路合并(2-way merge)算法,绝大多数情况下已经够用。 但是还有更复杂的三路合并和多内容树合并的情况。详情可参看: git-read-tree git-merge 等文档。

逆转与恢复:git-reset

项目跟踪工具的一个重要任务之一,就是使我们能够随时逆转(Undo)和恢复(Redo)某一阶段的工作。

git-reset 命令就是为这样的任务准备的。 它将当前的工作分支的 定位到以前提交的任何版本中,它有三个重置的算法选项。

命令形式:

git-reset [--mixed | --soft | --hard] [<commit-ish>]

命令的选项:

--mixed
仅是重置索引的位置,而不改变你的工作树中的任何东西(即,文件中的所有变化都会被保留, 也不标记他们为待提交状态),并且提示什么内容还没有被更新了。这个是默认的选项。
--soft
既不触动索引的位置,也不改变工作树中的任何内容,我们只是要求这些内容成为一份好的内容 (之后才成为真正的提交内容)。 这个选项使你可以将已经提交的东西重新逆转至“已更新但未提交(Updated but not Check in)”的状态。 就像已经执行过 git-update-index 命令,但是还没有执行 git-commit 命令一样。
--hard
将工作树中的内容和头索引都切换至指定的版本位置中,也就是说自 <commit-ish> 之后的所有的跟踪内容和工作树中的内容都会全部丢失。 因此,这个选项要慎用,除非你已经非常确定你的确不想再看到那些东西了。

一个重要技巧--逆转提交与恢复

可能有人会问,--soft 选项既不重置头索引的位置,也不改变工作树中的内容, 那么它有什么用呢?现在我们介绍一个 --soft 选项的使用技巧。 下面我们用例子来说明:

$ git-checkout master
$ git-checkout -b softreset
$ git-show-branch

这里我们创建了一个 master 的拷贝分支 softreset, 现在我们可以看到两个分支是在同一起跑线上的。

! [master] Merge branch 'robin'
! [robin] some work
* [softreset] Merge branch 'robin'
---
- - [master] Merge branch 'robin'
+ * [master^] Some fun
++* [robin] some work

我们为 文件增加一些内容并提交。

$ echo "Botch, botch, botch" >> hello
$ git-commit -a -m "some botch"
$ git-show-branch

我们可以看到此时 softresetmaster 推进了一个版本 "some botch" 。

! [master] Merge branch 'robin'
! [robin] some work
* [softreset] some botch
---
* [softreset] some botch
- - [master] Merge branch 'robin'
+ * [master^] Some fun
++* [robin] some work

现在让我们来考虑这样的一种情况,假如我们现在对刚刚提交的内容不满意, 那么我们再编辑项目的内容,再提交的话,那么 "some botch" 的内容就会留在版本库中了。 我们当然不希望将有明显问题的内容留在版本库中,这个时候 --soft 选项就很有用了。 为了深入了解 --soft 的机制,我们看看现在 softreset 分支的头和 ORIG_HEAD 保存的索引。

$ cat .git/refs/heads/softreset .git/ORIG_HEAD

结果如下:

5e7cf906233e052bdca8c598cad2cb5478f9540a
7bbd1370e2c667d955b6f6652bf8274efdc1fbd3

现在用 --soft 选项逆转刚才提交的内容:

git-reset --soft HEAD^

现在让我们再看看 .git/ORIG_HEAD 的中保存了什么?

$ cat .git/ORIG_HEAD

结果如下:

5e7cf906233e052bdca8c598cad2cb5478f9540a

看!现在的 .git/ORIG_HEAD 等于逆转前的 .git/refs/heads/softreset 。 也就是说,git-reset --soft HEAD^ 命令逆转了刚才提交的版本进度, 但是它将那次提交的对象的索引拷贝到了 .git/ORIG_HEAD 中。

我们再编辑 hello 文件成为下面的内容:

Hello World
It's a new day for git
Play, play, play
Work, work, work
Nice, nice, nice

我们甚至可以比较一下现在的工作树中的内容和被取消了的那次提交的内容有什么差异:

$ git-diff ORIG_HEAD

结果如下:

diff --git a/hello b/hello
index f978676..dd02c32 100644
--- a/hello
+++ b/hello
@@ -2,4 +2,4 @@ Hello World
It's a new day for git
Play, play, play
Work, work, work
-Botch, botch, botch
+Nice, nice, nice

接着,我们可以恢复刚才被取消了的那次提交了。

$ git-commit -a -c ORIG_HEAD

注意,这个命令会打开默认的文本编辑器以编辑原来提交的版本日志信息,我们改为 "nice work" 。 大家可以自行用 git-show-branch 命令来查看一下现在的分支状态。 并且我们还可以不断地重复上述的步骤,一直修改到你对这个版本进度满意为止。

git-reset 命令还有很多的用途和技巧,请参考 git-reset ,以及 Everyday GIT with 20 commands or So

提取版本库中的数据

这是个很有用的小技巧,如果你对你现在的工作目录下的东西已经不耐烦了, 随时可以取出你提交过的东西覆盖掉当前的文件,譬如:

$ git-checkout -f foo.c

标定版本

在 git 中,有两种类型的标签,“轻标签”和“署名标签”。

技术上说,一个“轻标签”和一个分支没有任何区别,只不过我们将它放在了 .git/refs/tags/ 目录, 而不是 heads 目录。因此,打一个“轻标签”再简单不过了。

$ git-tag my-first-tag

如果你打算针对某个commit ID来打标签,虽然该命令可以通过gitk里的右键菜单来实现,但是该命令对实际应用是很有帮助的。

$ git-tag mytag f0af6283824688f9d23426031734657661b54388

“署名标签”是一个真正的 git 对象,它不但包含指向你想标记的状态的指针,还有一个标记名和信息, 可选的 PGP 签名。你可以通过 -a 或者是 -s 选项来创建“署名标签”。

$ git-tag -s <tag-name>

合并外部工作

通常的情况下,合并其他的人的工作的情况会比合并自己的分支的情况要多, 这在 git 中是非常容易的事情,和你运行 git-merge 命令没有什么区别。 事实上,远程合并的无非就是“抓取(fetch)一个远程的版本库中的工作到一个临时的标签中”, 然后再使用 git-merge 命令。

可以通过下面的命令来抓取远程版本库:

$ git-fetch <remote-repository>

根据不同的远程版本库所使用的通讯协议的路径来替代上面的 remoted-repository 就可以了。

Rsync

rsync://remote.machine/patch/to/repo.git/

SSH

remote.machine:/path/to/repo.git
or
ssh://remote.machine/patch/to/repo.git/

这是可以上传和下载的双向传输协议,当然,你要有通过 ssh 协议登录远程机器的权限。 它可以找出两端的机器提交过的对象集之中相互缺少了那些对象,从而得到需要传输的最小对象集。 这是最高效地交换两个版本库之间的对象的方式(在 git 兼容的所有传输协议当中)。

下面是个取得 SSH 远程版本库的命令例子:

$ git-fetch robin@192.168.1.168:/path/to/gittutorcn.git  (1)
(1) 这里 robin 是登录的用户名,192.168.1.168 是保存着主版本库的机器的 IP 地址。
Local directory

/path/to/repo.git/

本地目录的情况和 SSH 情况是一样的。

git Native

git://remote.machine/path/to/repo.git/

git 自然协议是设计来用于匿名下载的,它的工作方式类似于 SSH 协议的交换方式。

HTTP(S)

http://remote.machine/path/to/repo.git/

到这里可能有些朋友已经想到, 实际上,我们可以通过 Rsync, SSH 之类的双向传输方式来建立类似 CVS,SVN 这样的中心版本库模式的开发组织形式。

通过电子邮件交换工作

读过上一节之后,有的朋友可能要问,如果版本库是通过单向的下载协议发布的,如 HTTP, 我们就无法将工作上传到公共的版本库中。别人也不能访问我的机器来抓取我的工作,那怎么办呢?

不必担心,我们还有 email !别忘了 git 本来就是为了管理 Linux 的内核开发而设计的。 所以,它非常适合像 Linux Kernel 这样的开发组织形式高度分散,严重依赖 email 来进行交流的项目。

下面模拟你参加到《Git 中文教程》的编写工作中来,看看我们可以怎么通过 email 进行工作交流。 你可以通过下面的命令下载这个项目的版本库。

$ git-clone http://www.bitsun.com/git/gittutorcn.git

之后,你会在当前目录下得到一个叫 gittutorcn 的目录, 这就是你的项目的工作目录了。默认地,它会有两个分支: masterorigin,你可以直接在 master 下展开工作, 也可以创建你自己的工作分支,但是千万不要修改 origin 分支,切记! 因为它是公共版本库的镜像,如果你修改了它, 那么就不能生成正确的对公共版本库的 patch 文件了。
Note
如果你的确修改过 origin 分支的内容,那么在生成 patch 文件之前, 请用 git-reset --hard 命令将它逆转到最原始的,没经过任何修改的状态。

你可以直接在 master 下开展工作,也可以创建你自己的工作分支。 当你对项目做了一定的工作,并提交到库中。我们用 git-show-branch 命令先看下库的状态。

* [master] your buddy's contribution
! [origin] degining of git-format-patch example
--
*  [master] your buddy's contribution
*+ [origin] degining of git-format-patch example

上面就假设你已经提交了一个叫 "your buddy's contribution" 的工作。 现在我们来看看怎么通过 email 来交流工作了。

$ git-fetch origin    (1)
$ git-rebase origin    (2)
$ git-format-patch origin     (3)

(1)更新 origin 分支,防止 origin 分支不是最新的公共版本,产生错误的补丁文件;
(2)将你在 master 上提交的工作迁移到新的源版本库的状态的基础上;
(3)生成补丁文件;

上面的几个命令,会在当前目录下生成一个大概名为 0001-your-buddy-s-contribution.txt 补丁文件, 建议你用文本工具查看一下这个文件的具体形式,然后将这个文件以附件的形式发送到项目维护者的邮箱: vortune@gmail.com

当项目的维护者收到你的邮件后,只需要用 git-am 命令,就可以将你的工作合并到项目中来。

$ git-checkout -b buddy-incomming
$ git-am /path/to/0001-your-buddy-s-contribution.txt

用 Git 协同工作

假设 Alice 在一部机器上自己的个人目录中创建了一个项目 /home/alice/project, Bob 想在同一部机器自己的个人目录中为这个项目做点什么。

Bob 首先这样开始:

$ git-clone /home/alice/project myrepo

这样就创建了一个保存着 Alice 的版本库的镜像的新目录 "myrepo"。 这个镜像保存着原始项目的起点和它的发展历程。

接着 Bob 对项目做了些更改并提交了这些更改:

(编辑一些文件)
$ git-commit -a 
(如果需要的话再重复这个步骤)

当他搞定之后,他告诉 Alice 将他的东西从 /home/bob/myrepo 中引入,她只需要这样:

$ cd /home/alice/project
$ git pull /home/bob/myrepo

这样就将 Bob 的版本库中的 "master" 分支的变化引入了。 Alice 也可以通过在 pull 命令的后面加入参数的方式来引入其他的分支。

在导入了 Bob 的工作之后,用 "git-whatchanged" 命令可以查看有什么信的提交对象。 如果这段时间里以来,Alice 也对项目做过自己的修改,当 Bob 的修改被合并进来的时候, 那么她需要手动修复所有的合并冲突。

谨慎的 Alice 在导入 Bob 的工作之前,希望先检查一下。 那么她可以先将 Bob 的工作导入到一个新创建的临时分支中, 以方便研究 Bob 的工作:

$ git fetch /home/bob/myrepo master:bob-incoming

这个命令将 Bob 的 master 分支的导入到名为 bob-incoming 的分支中( 不同于 git-pull 命令,git-fetch 命令只是取得 Bob 的开发工作的拷贝, 而不是合并经来)。接着:

$ git whatchanged -p master..bob-incoming

这会列出 Bob 自取得 Alice 的 master 分支之后开始工作的所有变化。 检查过这些工作,并做过必须的调整之后, Alice 就可以将变化导入到她的 master 分支中:

$ git-checkout master
$git-pull . bob-incoming

最后的命令就是将 "bob-incoming" 分支的东西导入到 Alice 自己的版本库中的, 稍后,Bob 就可以通过下面的命令同步 Alice 的最新变化。

$ git-pull

注意不需为这个命令加入 Alice 的版本库的路径,因为当 Bob 克隆 Alice 的版本库的时候, git 已经将这个路径保存到 .git/remote/origin 文件中,它将会是所以的导入操作的默认路径。

Bob 可能已经注意到他并没有在他的版本库中创建过分支(但是分支已经存在了):

$ git branch
* master
origin

"origin" 分支,它是运行 "git-clone" 的时候自动创建的,他是 Alice 的 master 分支的原始镜像, Bob 应该永远不要向这个分支提交任何东西。

如果 Bob 以后决定在另外一部主机上开展工作,那么他仍然需要通过 SSH 协议从新克隆和导入( Alice 的版本库):

$ git-clone alice.org:/home/alice/project/ myrepo

我们可以使用 git 自然协议,或者是 rsync, http 等协议的任何一种,详情请参考 git-pull

Git 同样可

Comments

1 2 3 4 5 6 7  Next»

wow gold

liping | 21/07/2010, 03:57

With close towow gold four wow goldmillionwow gold inhabitants, cheap wow goldChina's most buy wow golddevil-may-care buy cheap wow goldmetropolis was buy wow gold cheapthe fifth wow gold cheaplargest citycheapest wow gold ever anywhere and anwow buy gold oasis of cheap wow goldmodernity in a wow gold saletradition-bound ruralbuying wow gold nation. There were wow power levelglitzy nightclubs wow gold guide and state-of-artwow gold cheap cinemas gold for wow aplenty. wow gold pricesThere wow gold hackswere jaimake wow gold alai palaces wow power levelingand Europeanwow powerleveling boutiques,wow cd key burlesque clubs wow goldand well-frequented cheap wow goldbrothels. Surely wow goldthere must have wow gold cheapbeen a golf course.

replica watches

killuyi | 20/10/2010, 19:35

Everyone want to buy the replica watches they like with the high quality replica breitling but at the cheapest replica hublot price.Especially for Christmas,do you know where should you buy the best replica iwc?Now I tell you some replica audemars piguet places you should go to buy the replica watches you like.Have you heard replica omega?You can know more about replica breitling at replica tag heuer.Best designer replica watches are the great attributes to accentuate your rolex watches success and social position.It is possible to speak about replica cartier for a long time,if it is replica tag heuer cannot brag about the wide model line as many other leading replica watches manufacturers.A rolex watches is a perfect copy of a genuine watch that still costs less replica omega so when buying replica breitling you don't risk spending a fortune!Secret of this popularity of the replica watches lies in that it is a replica breitling with its unique stlye replica omega character.

Our replica hublot will be almost as precise replica audemars piguet and durable replica watches as the original replica breitling and replica omega will look exactly the same.This automatic replica hublot in a firm,massive replica jaeger-lecoultre is provided with round dial replica watches having three sub-dials replica breitling and a date-window.Cartier replica omega are almost 100% correspond with the original replica hublot and made in accordance with all technological replica jaeger-lecoultre for creating wrist replica watches.The quality of replica omega is guaranteed by the so-called replica bvlgari,the highest form of recognition in the replica jaeger-lecoultre sector.Cartier replica rado will be almost as precise replica watches and durable replica breitling as the original replica omega and replica audemars will look exactly the same.Of course,you can choose a replica jaeger-lecoultre as a replica watches gift to the person who like replica omega.It is advise that you send a replica breitling to your friends.Enjoy the high quality replica watches,the best deal replica omega and best replica breitling service.It is wise choice for you to choose our replica watches which is replica omega.Cartierís replica breitling brilliant mid of an inventor as well as replica watches led to the creation of some beautiful replica omega,reliable replica breitling and precise replica watches timepieces.

On Christmas Day,everyone are in good mood,and they are looking forward to receiving replica hublot from their family members and their friends.Of course, you also can give the replica iwc to your friends.Cartier replica watches are your best choice.replica omega will cost you a convenient amount of money and replica breitling prove to be a very reliable replica watches that will also feel precious replica watches brand round your wrist.You'll even be able to enjoy the latest replica iwc,with the Luxuryest replica watches.So you can know where you should go to buy rolex watches on Christmas Day now.replica iwc is waiting for you!replica audemar piguet hope you have a good time on the coming Christmas Day!

agsa

ryanm | 27/10/2010, 08:14

A graceful lady always pay much attention to what links of london she wear.To be women,all links of london charms to be attractive links of london bracelets and beautiful links london.And a piece of good links of london charms especially a piece of famous links of london bracelets can add us more charm and links of london make us more attractive.There are a lot of beautiful links of london charms and charming links of london bracelets like links london Jewelry at links of london charms.Almost any lady can obtain links of london bracelets in this online links of london store without spending too much money.The links of london charms products from links of london bracelets have made links of london easy for everyone to have stunning links of london charms of different designs so as to enhance their beauty and look stylish.Having links of london bracelets Jewelry is a very enjoyable experience.You can showcase thomas sabo to your friends or your colleagues.

Jewelries are items of fashion thomas sabo charms,which is used casually thomas sabo bracelets as well as formally thomas sabo jewellery.Nowadays,thomas sabo charms has become a very essential part of our lives.Most of people like fashion thomas sabo bracelets,and of course,they also like thomas sabo.At thomas sabo charms,there are a lot of thomas sabo bracelets such as thomas sabo jewellery Bracelets,thomas sabo charms Charms,thomas sabo bracelets Rings,thomas sabo Earring and thomas sabo charms Pendants.It seems that no matter how expensive the dresses you are wearing or how much costly makeup you have put on,if you are not wearing any thomas sabo bracelets it will look as if jewelry store is missing.Therefore,Women all like to wear pandora jewelry to match their dresses because a piece of right tiffany jewelry will make wholesale jewelry more elegance.Of course,sometimes pandora jewelry is not possible for everyone to buy those expensive tiffany jewelry of silver jewelry on sale,gold pandora jewelry,pearls tiffany jewelry,diamond jewelry on sale and other real pandora jewelry items.Here,I can tell you that the tiffany jewelry at jewelry on sale are your best choice,not only the affordable pandora jewelry price,but also the tiffany jewelry high quality.

Here I would like to recommend jewelry store item to you.That is pandora jewelry.The tiffany jewelry are 925 silver cheap juicy couture,exquisite juicy couture necklaces and unique juicy couture watch,good looking juicy couture jewellery and reasonable price and are good juicy couture necklaces choice for your families,friends and relatives.What is more,most juicy couture watch are excellent for young ladies as they can afford to have a beautiful jewelry store collection of matching brand jewelry to their dresses.OK,now,you may be know links of london a lot.Come to our thomas sabo to buy it!

sss

sss | 27/10/2010, 08:21

New Balance vibram fivefingers is the best Tennis five fingers kso shoe you will buy.And,vibram kso is the 800 series that one can wear vibram five fingers for more than 10 years.I am not just kidding you,I telling you the truth.Itís the best tennis five fingers kso you can wear vibram kso even your toes donít cramp and cross causing much pain.So many vibram 5 fingers customers have been buying these Discount five fingers kso New Balance vibram kso for about 10 years and wonít even consider buying a different mbt shoes.Some mbt lami customer told me that she use mbt chapa to do a lot of 10K walks and ended up having a problem with my feet.But after being diagnosed with plantar fascitis by her podiatrist years ago,she learned that good mbt shoes are a must have.Someone told she about these mbt lami and so she bought a pair of mbt chapa Shoes Online.From the moment she put mbt shoes on sale on and put my mbt lami inside,I know she could felt a huge relief.These are the only mbt chapa she can wear.Sometimes mbt shoes are a bit pricey but comfortable.

This is my third year of selling mbt lami shoes!I love mbt chapa because mbt shoes on sale are comfortable mbt lami,supportive mbt chapa and best of all mbt shoes,the mbt lami!The mbt chapa keeps your feet straight if merrell shoes have a tendency to lean inward or outward!merrell boots keeps it from sliding to one side or the other while walking.merrell sandal looked smaller than other merrell shoes when you got merrell boots,but merrell sandal are exactly the same size.My merrell shoes Foot Doctor told me that one of the best merrell boots and number is merrell sandal in the 800 cheap shoes and above shoes online series.He said the discount shoes is not suppose to bend in the middle,but should bend at the toe.These are the only shoes online so many customers will ever buy.

More and more girls pay more attention to ed hardy clothing because of their special attractive.If you used ed hardy hoodies as a fashion accessory to match with our ed hardy boots,you can look very charming.Since ed hardy clothes are more fashion for us to use,we need to select ed hardy hoodies carefully.Now I would like share some tips of matching ed hardy boots with our ed hardy clothes with you.ed hardy hoodies is a popular brand that I would like to introduce it to you.If you have ed hardy boots clothes and a simple vest,you should buy while true religion jeans to match your diesel jeans.That will make you look nice and help you become the focus in the street.But you should make sure that the calvin klein jeans is simple and fashion.If you want to take part in an important party,you need to choose a lee jeans with high quality.You should also pay much attention to diesel jeans design and many other details.We can always find that good calvin klein jeans have their own creative designs and special logo.

hfjhg

jfgj | 28/10/2010, 00:49

New Balance vibram is the best Tennis five fingers kso shoe you will buy.And,vibram kso is the 800 series that one can wear vibram for more than 10 years.I am not just kidding you,I telling you the truth.Itís the best tennis five fingers kso you can wear vibram kso even your toes donít cramp and cross causing much pain.So many vibram customers have been buying these Discount five fingers kso New Balance vibram kso for about 10 years and wonít even consider buying a different mbt shoes on sale.Some mbt lami customer told me that she use mbt chapa to do a lot of 10K walks and ended up having a problem with my feet.But after being diagnosed with plantar fascitis by her podiatrist years ago,she learned that good mbt shoes on sale are a must have.Someone told she about these mbt lami and so she bought a pair of mbt chapa Shoes Online.From the moment she put mbt shoes on and put my mbt lami inside,I know she could felt a huge relief.These are the only mbt chapa she can wear.Sometimes mbt shoes on sale are a bit pricey but comfortable.

This is my third year of selling mbt lami shoes!I love mbt chapa because mbt shoes are comfortable mbt lami,supportive mbt chapa and best of all mbt shoes on sale,the mbt lami!The mbt chapa keeps your feet straight if merrell shoes have a tendency to lean inward or outward!merrell boots keeps it from sliding to one side or the other while walking.merrell sandal looked smaller than other merrell shoes when you got merrell boots,but merrell sandal are exactly the same size.My merrell shoes Foot Doctor told me that one of the best merrell boots and number is merrell sandal in the 800 discount shoes and above discount shoes series.He said the shoes online is not suppose to bend in the middle,but should bend at the toe.These are the only discount shoes so many customers will ever buy.

More and more girls pay more attention to ed hardy clothes because of their special attractive.If you used ed hardy hoodies as a fashion accessory to match with our ed hardy boots,you can look very charming.Since ed hardy clothing are more fashion for us to use,we need to select ed hardy hoodies carefully.Now I would like share some tips of matching ed hardy boots with our ed hardy clothing with you.ed hardy hoodies is a popular brand that I would like to introduce it to you.If you have ed hardy boots clothes and a simple vest,you should buy while lee jeans to match your diesel jeans.That will make you look nice and help you become the focus in the street.But you should make sure that the calvin klein jeans is simple and fashion.If you want to take part in an important party,you need to choose a true religion jeans with high quality.You should also pay much attention to diesel jeans design and many other details.We can always find that good calvin klein jeans have their own creative designs and special logo.

free exam questions

JACK | 29/10/2010, 20:44

With MCTS: Windows 7, Configuration solution, you hold the key to becomingfree exam questionscertified and launching your new career in CompTIA a matter of weeks.A highly experienced MCSE Certificationinstructor who has trained Microsoft exam more than 200 successful MCTS Certification students.

Hermes Birkin

Hermes Birkin | 18/11/2010, 17:03

Max Azria Herve Leger of Herve Leger Hermes Birkin from France, was founded in 1985, christian louboutin Paris is the famous fashion design house.Hermes Herve Leger dress to shaping the modern women, christian louboutin women have shown that line feels soft and the silhouette. Hermes birkin Herve Leger clothing Christian Louboutin Pumps each place of body, to cut out the perfect bodily form female carved image and get Christian Louboutin the name "the bandage dress". hermes belt Whether on the red carpet in attendance or Leger Herve christian louboutin heels party town of clothing for you to create Christian Shoes unforgettable image.
In 1999, Christian Louboutin shoes Paris dress design house by Christian Louboutin Pumps the Los Angeles fashion giant Herve Leger Christian Louboutin Boots BCBG Azria Group owns, Max. This is herve leger dresses the first time in history of christian louboutin glitter French fashion brand by ugg boots sale American designer at the helm. Herve Leger in design and production of high-grade Hermes birkin luxury and ready-to-wear uniforms. hermes purse She and the perfect combination of Azria Max undoubtedly makes the brand Hermes Purse development in a new step. Max Azria Group determined Moncler BCBG Herve expand Leger of retail Hermes Belt sales in New York, soon will appear on herve leger Madison avenue Herve four Leger boutiques. Hermes Birkin Soon, Beverly villa, the moncler legendary Rue Paris Cambon, Moncler Jackets Las Vegas also have a shop.moncler jackets
In the summer of 2007, in order to meet the market Moncler demand growth, Leger released by Max Herve Azria cocktail dress design. Soon, the Moncler Jackets world and the garment wholesalers, will cooperate moncler mens with Herve Leger Moncler Jackets garment around the world.
Since Moncler Clothing its establishment, from Herve Leger marked and Hermes sexy design style attracted numerous international customers herve leger bandage dress worldwide, which is the most beautiful and the mostfashionable women. ghd hair straighteners Hollywood star like Lindsay Lohan, article required, new Charlize Theron Zeta - a flop,Hermes Birkin and Beyonce, Christina Aguilera, Eva Mendes, Jackson, cernet operated Hermes Birkin Price language examiner "- Nicole Richie,Jessica Simpson, herve leger Eva Longoria and Jessica Biel, Leger Herve herve leger became the most loyal fans. Herve Leger christian louboutin name forever and Hollywood's herve leger dress glittering and charm.herve leger dress
Hermes was committed to create delicate woman, it deserved to win many a christian louboutin heels woman's heart. This luxury brand to cutting-edge fashion. christian louboutin Even if the is set as a symbol of social status. As a style Christian Louboutin sale of hermes bag is simple, Hermes birkin because of its value, more and christian louboutin pumps more people are willing to take Handbag to any occasion, Especially some luxury christian louboutin boots and important occasions. moncler womens We often see many famous stars Christian Louboutin shoes with Birkin bag,you are one herve leger dress of them on the waiting list? Moncler Clothing
You can let your Handbag ugg boots sale desire, when your hermes bag? Now, we Moncler expect you to join us.

jewelry store

jewelry store | 02/12/2010, 23:48

Everyone know ed hardy clothing is viewed as the greatest clothing designer.ed hardy clothes has always been doing the top ed hardy hoodies line.This is the reason why there are a lot of celebs are proud to be noticed having fashionable ed hardy boots.So ed hardy handbags is very popular in the world.ed hardy bags often introduced some new stunning ed hardy shoes products.Designers always do everything possible to blend the classical ed hardy sunglasses and modern ed hardy caps,classics and trends,and often bring customers unexpected ed hardy products.Then they make ed hardy boots the perfect combination of classics and fashion.
Stylish juicy couture and unique design cheap juicy couture,rich color juicy couture jewellery,high quality juicy couture necklaces,successful publicity strategy and public relations gradually make juicy couture watch became a top class watch brand and fashion celebritiesí preferred brand.Resulting in the brandís international status has also become firmly established.The stylish juicy couture handbags and comfortable juicy couture sunglasses of JC can make people look like more youthful and vigorous.Therefore,most of juicy couture walletsís lovers are young people.juicy couture earrings can also show your personality well.

ModernSpa

Marissa | 03/12/2010, 23:36

Many resorts, health clubs, condominium and apartment complexes and industrial facilities are equipped with sauna rooms. Enjoying saunas is becoming a kind of luxury enjoyment, but going out to these public places is not that convinent, sometimes even waste time and money. Enjoying spa at home is now a fashion, you can install a traditional sauna room or 2-in-1 steam and sauna room at your bathroom. There is also an amazing 3-in-1 spa center, you can enjoy steam, sauna and massage bathtubs just at one space.

Hot tub

Karol | 03/12/2010, 23:42

Before you go to choose a bathtub, you should be clear about your requirements from the bathtub. You should choose a bathtub only after taking all the factors into consideration, and choosing the perfect one will be a breeze! But no matter what you want, you can choose it in Modern Spa. Modern Spa is a specialist in the SPA industry, which has been making steam showers, whirlpool baths, shower enclosures and traditional saunas since 1993.

free exam questions

JACK | 04/12/2010, 20:40

The Cisco certification exams 70-297 contain multiple-choice, freeform response,70-620 Exam Fill in Network+ certification the blanks and simulation questions.70-680 Exam You will also get Windows Vista exam exhibits and security+ certification scenario based free practice exam questions.

cheap ugg boots

nike dunks | 11/01/2011, 02:29

When I got Vibram Five Fingers the download again, I noticed that the application icon Angry birds show no progress as a character IOS Vibram Five Fingers Mens
application if they want to be updated. 41.1MB download took about three minutes for me.
The announcement was made in the suburbs of Prince George's County in Landover, the window during a state nike sb sale visit that the new company has tax breaks for companies.
State section updates Mac App Store has changed the installation after the download completes. I noticed nike sb that the icon Angry birds in my Programs folder "Flash" and I checked this was a review of version 1.0.1, "Information". Reclassification is installed, and folders with the names of nine counts in the ~ / Library / Application Support / folder disappeared AppStore and there is no evidence in the trash.
And that's all. Version 1.0.1 of angry birds went smoothly. If I did not interrupt the update and pushed me to the Mac, Nike Air Max cheap to find the files, the whole process would last barely noticeable under five minutes. It will be interesting to see how a renovation and modernization of the basic version of the Mac App Nike Air Max Store has been handled.

CCIE EXAM

endeavor | 26/05/2011, 19:57

Apart from the skills, candidates also gain knowledge in ccieinstallation, monitoring as well as troubleshooting the networking devices for maintaining the confidentiality, availability and integrity of devices, data and developing the technology competencies that Cisco uses its ccie security infrastructure. Candidates can gain CCIE Exams certification by registering Implementing Cisco IOS network security program (IINS).

designwatchcopy

carlalee | 08/06/2011, 23:43

One of the ultimate in fashion accessories is an Cartier Watches. However, with an original Cartier Watch being priced at over $6,000, many people who are looking for this touch of elegance and style and looking for well-made Replica Cartier 21 Must De Cartier Watches. But who should your broker be? We offer solid Replica Cartier Ballon Bleu Watches at the lowest possible price from any of our competitors. You know that when you order your Replica Cartier Calibre de Cartier Watches from us, we not only have fast shipping and fantastic customer service that will contact you within three hours of your query any time, day or night, but you know that you are getting one of the highest quality Replica Cartier La Dona Watches on the market from reliable suppliers that are tested before they ship. We are the best marketplace for your Replica Cartier Pasha Watches needs.

Re: Git 中文教程

xixi | 23/06/2011, 22:26

When youchanel purse try searching for chanel walletsdealers in your city, youjuicy couture outlet will realize that most of them also buy bags from you. So polo by ralph laurenthe next time you want to clean your wardrobe and get rid birkin hermes handbagsof some old bags, sell them to knock off louis vuittonsuch dealers instead of throwing them away. And for all louis vuitton walletyou know, that little amount of money that you get back from mulberry alexaselling your old bag might just be enough to buy youchanel bags a different used bag instead.A lot of such dealers have now come up with their ownjuicy couture tracksuitswebsites as well, so you can do the sale and purchase of these used bags online too. Buying Chanel second hand bags online has more advantages, becausegucci handbags there you will get options from many different dealers, all at one place. And prada handbagsthen it will also be easier for you to compare the prices and the deals that different dealers are giving.

what should be attention when buy inflatable products

inflatables | 24/06/2011, 01:08

Becasue i am employed myself in water slide field about 6 years, after finishing the bouncy castle you can transport them by air courier, there usually just need 3-5days by dhl,ups, fedex or ups or ems.Especial if you buy two or more pieces of bounce house, the weight is heavier, and freight by air courier is more expensive. Here i just share with the water slide or inflatables buyers, if you decide to buy one ore more pieces of inflatables, Here i just share with the water slide or inflatables buyers, if you decide to buy one ore more pieces of castle bounce, you can buy it in http://waterslide.en.hisupplier.com, inflatables tent, inflatables toy, large inflatables.

Gucci bags

Gucci bags | 27/06/2011, 17:53

Hong Kong! The legendary Gucci Outlet Online chinese language village of existence and lights, in which millionaires rub Cheap Gucci Bags shoulders with fresh-off-the-boat immigrants, skyscrapers overshadow shanties and type division are as dramatic sinceGucci Bags On Sale the neon that illuminates it all. situated near to the southernmost financial organizations using the chinese language mainland and pressed toward the Cheap Gucci Wallets, there truly is nowhere else through the world like Hong Kong, for Hong Kong will in all probability be the World.It wasn't until 1938 how the very first Gucci merchandising store opened Gucci Wallets On Sale its doors in Rome near to the by means of Condotti. many using the genuine merchandise marketed at that very first store have been handcrafted by Discount Gucci Handbags.

chanel wallet on a chain

chanel wallet on a chain | 04/07/2011, 21:42

Therefore,chanel wallet on a chain handbags are very important for a woman's personality.juicy couture bags Handbags play a very vital role in the determination ralph lauren big pony polos of the style quotient of women.hermes men bags Keeping that in mind many huge brands have come up with many products which are specifically various kinds of handbags. To name a few, they are knockoff handbags. These bags luggage louis vuitton are said to be one of the most popular kind of handbags. That is the reason almost every brand, whether big or small, manufactures or designs knock off purse.But Knock off purse of various brands was always known to be very expensive. It was very much obvious also because it was one of the fake louis vuitton man wallet most popular kinds of handbags that the companies made. However many people are not aware of the fact that these Knockoff handbags are not expensive mulberry bayswater anymore. Various sites are trying to make people aware about this fact only. The reason that is making these bags cheaper is the replica handbags.juicy couture outlet Many designers are now trying to bring about handbags gucci tote bag which looks exactly similar to the original bags, but at a very low cost, and some websites are making these products popular amongst the public so that people who cannot Christian Dior Handbags afford to buy these expensive bags but chanel replica dream of owning one can fulfill their dream.These replicas knock off handbags looks exactly chanel purse similar to the original ones in every aspect. The designers ensure that no one can differentiate between the original bag and the replica by just looking at it.

Re: Git 中文教程

Louboutin Shoe | 08/07/2011, 23:33

Due to the fact we live on the automated globe, investigation for new pals and in enjoy on line isn't any far more one exit. Thousands of relationships and marriages are created by initially realizing their associates on the net. Louboutin Shoes The logic of the dating on line isn't diverse as that when you seek a associate with the nightclub. The only distinction is which you have much more singles to pick among all of the Web sites free of charge Christians of dating. Louboutin Shoes With the nightclub, you do not have a lot more chance. The proof is that once you seek with any Christian service of dating, Louboutin Shoe you are going to see a lot of gorgeous girls or Christian single men revealing. You've got a chance to pick which to come above into get in touch with. A lot more than you get in touch with is far more individuals the chance you'll obtain inside the answers of them.

Add comment
  The code is case-insensitive  If the code is not clear enough, please click the image to refresh | Maximum attempts: 10
1 2 3 4 5 6 7  Next»
 
Accessible and Valid XHTML 1.0 Strict and CSS
© DSLab - Powered by LifeType - Design by BalearWeb