三、快速学习创建版本库、管理修改、查看状态、分支、标签、变基、克隆远程版本库

来源:互联网 发布:程序员常用的工具 编辑:程序博客网 时间:2024/06/05 17:19

一、创建版本库

Git中,版本库(.git目录)与工作目录并排存放在同一个目录中。

首先创建一个存放项目源代码的目录,然后把这个目录初始化为版本库。

命令如下:

mkdir learnGitcd learnGitgit init
之后这个版本库就可以用来记录和跟踪项目代码了。


二、代码修改

创建一个index.html文件,跟踪版本。

1)把文件添加到版本库中

要想Git跟踪这个文件,必须让它知道这个文件;

首先使用git add 命令把文件添加到版本库的暂存区,然后使用git commit命令提交到版本库。

git add index.htmlgit commit -m "add in hello world HTML"

文件或文件列表可以作为git add命令的参数。

git commit命令创建一个提交记录,提交记录存储在版本中的历史记录,每提交一次创建一个记录,并标记出代码的演进。

Git把提交者的姓名和邮件地址,以及提交留言,都添加到提交记录中。

参数-m作用是,告诉Git本次提交的提交留言为add in hello world HTML。

会输出:

[master (root-commit) 8f4be3a] add in hello world HTML 1 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 index.html

2)查看提交记录

命令:

git log
通过这个命令可以看到提交相关信息。
输出如下:

commit 8f4be3a27aef634e237ea2708a02dead69274523Author: GongYan <66666@qq.com>Date:   Thu Jul 30 14:48:53 2015 +0800    add in hello world HTML
第一行显示提交名称,该名称是Git自动产生的SHA-1码,Git通过它来跟踪提交;

git log 输出的提交名称的前七位字符和命令git commit输出的相同,git commit显示的是提交名称的缩写;

第二行显示提交者的信息;

第三行是提交日期;

最后是提交留言。


三、在项目中工作

把文件添加到版本库中后,就可以跟踪文件了。

在index.html中进行修改后可以通过git status命令查看工作目录的状态。

1)查看工作目录状态

 git status
输出:

# On branch master# Changed but not updated:#   (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")
输出结果表明Git监测到修改,但是没有暂存。

修改过的文件在Changed but not updated下面列出来,如果要提交,需要暂存修改;暂存修改,以准备把修改提交到版本库。

Git中有三个地方可以存放代码:工作目录、暂存区、版本库。

暂存区,暂存区是工作目录与版本库之间的缓冲区,暂存区中存放的是准备提交到版本库中的修改。

2)把版本库中修改后的文件加入暂存区

这时候同样使用git add命令,这时候它告诉Git要跟踪的是一个新的修改而不是新文件。

命令:

 git add index.html
执行后没有输出,此时再次执行git status输出如下:

# On branch master# Changes to be committed:#   (use "git reset HEAD <file>..." to unstage)##modified:   index.html#
Changed but not updated变为Changes to be committed,提示为待提交。
3)提交留言

把修改后的文件加入暂存区后,可以提交留言,通过git commit。

git commit -m "add something to index" -m "allows for a more semantic document."
这里的git commit使用了两个-m参数,Git可以接受任意多次提交留言的输入,每次另起一段。

通过git log来浏览提交的留言。

git log -1
输出如下:

commit 86e6bb88e6198275bd29ce6fa880ae82064f1322Author: GongYan <669338805@qq.com>Date:   Thu Jul 30 19:04:19 2015 +0800    add something to index        allows for a more semantic document.

这里引入了git log的一个新参数-1,可以通过改变数字来限制命令git log输出的提交条目的个数。


四、理解并使用分支

分支是维护项目中并行历史记录的方法。

从Git工具的角度讲,想怎么用分支就怎么用,但是在实际应用中,需要根据具体情况来确定。

有两种分支比较有用:用来支持项目的不同发布版本的分支;以及用来支持一个特定功能的开发的分支。

1)创建一个新分支

创建分支的命令是git branch,该命令需要两个参数:新分支名称和父分支名称。新创建的分支基于已经存在的父分支。

 git branch dev master

该命令从主分支上创建一个叫dev的分支,主分支是Git默认的分支。

在之前创建的index.html文件后加入新的一行,然后利用git commit提交到版本库。

 git commit -a -m "add new line"
命令git commit 带了上一个-a参数,它告诉Git提交全部修改过的文件。

现在主分支上是最新的修改,而dev分支上还是未修改过的。

2)切换分支

切换分支使用git checkout命令。

切换到dev分支上:

 git checkout dev
命令执行后输出:

Switched to branch 'dev'
上面提示切换到分支dev中。

此时打开文件index.html文件查看,之前在主分支添加的内容不见了。


五、发布版本
1)标签的使用

给Git中的代码打标签,意味着在版本库的历史中标记出特定的点,这样将来就容易找到相应版本的代码。

打标签使用git tag命令。

git tag 1.0 dev
以上命令中的两个参数分别指明了标签的名称和希望打标签的点,它们分别为1.0和dev分支的末梢(所对应的版本,或者说所对应的提交)。

用不带参数的命令git tag可以查看版本库中的标签列表。

[gongyan@gongyan learnGit]$ git tag 1.0[gongyan@gongyan learnGit]$ 
目前只显示了刚刚打过的标签1.0。

2)变基命令

变基命令git rebase,把一条分支上的修改在另一条分支的末梢重现。

现在有两条分支上有不同的提交,通过变基命令进行整理。

先切换回主分支:

git checkout master
然后运行命令git rebase:

git rebase dev

后面跟一个参数,希望变基到哪条分支的末梢,就使用哪条分支名称做参数。

输出:

Current branch master is up to date.

变基的意思是:改变分支的基底,假定有分支A和分支B,它们的分叉点是版本Y,Git的实现方法是,如果站在分支B上告诉Git”我要变基到A的末梢“,那么Git会把从版本Y到分支B的当前末梢之间的所有提交,顺序加到分支A的末梢上去,生成新的分支B及其末梢,而分支A及其末梢则没有任何变化。

3)删除分支

删除分支使用git branch命令,需要加上-d参数。

git branch -d dev
输出如下:

Deleted branch dev (was 86e6bb8).
表示删除分支dev。

4)通过已有标签创建分支

可以从打标签的地方创建一条分支。

使用命令git branch。

git branch dev 1.0
命令最后改成发布的标签名称。

5)为代码发布创建归档文件

通常情况下,将标签对应的版本内容打包成一个tar或者zip包就可以了。

可以利用git archive命令进行归档处理。

 git archive --format=tar --prefix=dev-1.0/ 1.0 | gzip > dev-1.0.tar.gz
该命令有三个参数,第一个,--format指明要产生tar格式的输出;第二个,--prefix指明包中所有的东西都放到dev-1.0/目录下。

最后1.0指明需要归档的标签名称。

命令git archive也可以产生zip文件,命令如下:

git archive --format=zip --prefix=dev-1.0/ 1.0 > dev-1.0.zip


六、克隆远程版本库

Git可以与远程版本库打交道,分享本地的工作成果,或者复制其他的版本库到本地。

可以使用git clone克隆远程版本库。

git clone git://github.com/GongYan/test.git test
命令git clone带有两个参数:远程版本库的位置和存放该版本库的本地目录。

0 0