git(8)管理本地版本库


git(8)管理本地版本库

Posted by 姜立 on 2011 年 10 月 05 日 in  Git |

首先克隆一个版本库

git clone git://github.com/tswicegood/mysite-chp7.git

使用标签标记里程碑

git关于标签的命令是git taf。该命令与git branch命令类似,不加参数地调用它,可以查看已存在标签的列表:

git tag

image

git tag 1.1


git tag

image

当git标签命令运行成功时,它并不提供反馈信息,但是当有问题时,它会通知你。

如果只使用标签参数调用命令git tag,git将基于当前工作目录树中的提交(也就是检出分支的末端版本)创建标签。也可以添加一个参数指定需要标记的提交,这个参数可以是任何有效的提交名称或者分支名称。

git tag contacts/1.1 contacts

git tag

image

你可以使用标签返回标签的版本库状态,虽然不能改变标签所对应的代码,但是可以检出标签,就像检出分支一样。

git checkout 1.0

image

这时不在任何分支上,没法提交,因此不能跟踪改动。运行git branch查看当前的本地分支,git将会显示不在任何分支上:

git branch

image

你可以使用命令git checkout -b创建并检出一个新分支:

git checkout –b from-1.0

image

还可以将标签作为第二参数调用命令git branch或git checkout -b创建新分支:

git checkout –b another-from-1.0 1.0

image

发布分支的处理

发布分支是指即将要发布代码的地方。发布分支通常只需要少许改动,往往侧重与BUg或逻辑修正,很少会添加 新功能。有了发布分支,在主分支上继续开发新功能就会很方便,因为发布分支上包含了须要发布的代码,而且不会将新开发的代码包含进来。

发布分支通常以RB_作为前缀并包含版本号。例如RB_1.2。

git branch RB_1.0.1 1.0

image

只要将标签名称作为git branch的第二个参数,git就会基于该标签所指定的提交创建分支。

新分支就像是创建标签时的发布分支,他的历史记录与被删除的发布分支的历史记录完全一样。

git log –pretty=format:”%h %s”

image

当在该发布分支的操作完成后,创建一个新的标签:

git tag 1.0.1

标签创建完成后,将该发布分支删除,先要回到主分支,因为git不能删除当前检出的分支:

git checkout master

git branch –D RB_1.0.1

image

注意这里使用的命令是git branch –D,因为该分支没有合并到主分支。

发布分支有助于在临近发布前组织团队工作流程,可以将一个即将发布的版本与新功能开发及因此带来的Bug相隔离,以确保只有必要的Bug修正,客户的最终反馈等,集成到即将发布的版本中去。

使用git子模块跟踪外部版本库

通过git子模块可以跟踪外部版本库,它允许在某一个版本库中再存储另一个版本库,并且能够保持两个版本库之间的完全独立。

添加新子模块

mkdir  magic

cd magic

git init

image

在这个刚生成的空版本库,使用命令git submodule来查看该版本库中的子模块:

git submodule

因为目前还没有定义任何子模块,git没有返回任何信息。添加一个新的子模块很简单,使用git submodule add命令。有两个必须的参数,第一个是源版本库,第二个是要存储该版本库的路径。

git submodule add git://github.com/tswicegood/hocus.git hocus

image

git submodule

image

git子模块跟踪了远程版本库的一个特定版本,以一个哈希值来标明,最后显示的是你所起名字。注意哈希值前面的减号,它表明hocus子模块还没有没初始化。要初始化,如下:

git submodule init hocus

image

git status

image

其中.gitmodules是一个存储用户所有模块信息的纯文本文件。git版本库记录和跟踪这个文件。当别人共享你的版本库时,git就可以根据这个文件的信息来部署他们的子模块。

git commit –m “initial commit with submodule”

image

克隆含子模块的版本库

git clone magic new-magic

image 

注意这个这个是在magic的上一目录。

cd new-magic

ls

 image

你可以看到hocus目录,进入该目录后,会发现这个是空文件夹。运行命令git submodule会发现它还没有初始化:

git submodule

image

git submodule init hocus

image

但是hocus目录仍是空的,还需运行git submodule update把内容从源版本库拿来。

git submodule update hocus

image

改变子模块版本

git子模块并不会自动引用版本库中的最新提交:子模块只反应在某个提交对应的版本。当初添加子模块时,git总是用源库当时的HEAD,也就是源库中当时检出分支末梢对应的版本。当需要切换到其他版本时,还须做一些操作。

当用户第一次创建子模块时,git记录所引用的提交,之后他和该版本库间,不会有什么通信和同步,事实上,子模块是检出某个特定提交版本库的完整克隆。通过切换到hocus目录可以看出,查看分支列表:

cd hocus

git branch

image

这个版本库只有两个提交,我们从第二次提交切换到第一次提交,检出HEAD的前一个提交:

git checkout HEAD^

image

现在告诉git当前这个版本是我们想要的,调用这个命令git submodule可以看出,git 已经检测到了改动:

cd ..

git submodule

image

+表示他不是一个容器版本库所记录的该子模块应该在的版本。使用git status也显示出hocus目录被改动:

git status

image

现在要做的工作是添加hocus目录到暂存区,并提交,表明你希望git引用子模块这个新的版本。

git add hocus

git commit –m “update commit to track in submodule”

image

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值