此时,我们可以再次使用组合命令 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"

管理分支: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:

只有注册用户登录后才能发表评论。

posts - 28, comments - 17, trackbacks - 0, articles - 0

Copyright © Test8848-谷峰