Hudson终于摆脱了Oracle,现在更名为Jenkins,并使用GitHub托管所有代码.之前一直用Subversion作为版本管理,今天就拿Jenkins项目试用一下Git这个分布式的版本管理工具
注册GitHub账户
GitHub是一个托管Git项目的网站,免费版提供300G空间,但是项目必须是开源的,如果是闭源要收费的.
完成用户注册后,需要在你的本机上生成密钥对,这样项目可以push到 GitHub上.
这时进入Git提供的Bash界面,然后执行下面的命令生成密钥对
bash-3.1$ssh-keygen -t rsa -C "gz007@gmail.com"
上面输入的邮件必须和你注册GitHub时用的是同一个,这时页面提示输入生成公钥的文件名,这里最好直接输入一个不带文件夹路径的名字,我就直接输入 id_rsa ,然后一路回车,完成时会在msysgit的bin目录生成 id_rsa,id_rsa.pub 两个文件.
用户根路径 Windows环境的Git在寻找用户根目录时首先找msysgit的安装目录,所以在执行SSH命令时会在msysgit下查找.ssh目录
所以我手工在msysgit下创建了.ssh,然后把生成的两个公钥文件复制到.ssh目录中.最后的目录结构如下图:
接下来需要在GitHub上创建一个SSH公钥,首先进入账户管理页面,点击SSH公钥,点击"添加新的公钥",输入一个代表你机器的名称,因为有可能创建多个公钥对应你的多台开发机器.最后把id_rsa.pub里的内容复制到下方的输入框中.如下图:
现在可以测试新建的Git库了,进入msysgit的bin目录下,执行下列命令:
bash
bash-3.1$ssh git@github.com
Hi gz007! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
如果提示链接错误,大部分原因都是没有找到.ssh目录
Git实战
$git config --global user.name "gz007"
$git config --global user.email "gz007@gmail.com"
$mkdir new-project
$cd new-project
$git init //初始化一个新库new-project,这时会在目录中生成一个new-project.git的文件
新建一个文件命名为README.txt.然后加入到库中
$git add README.txt
$git commit -m 'init commit' //提交README.txt文件
为远程的github服务器创建个别名,叫origin
$git remote add origin git@github.com:gz007/new-project.git
如果一切顺利,那么就可以在github上的new-project项目源码中看到README.txt了. Git编辑更新,手工编辑README.txt,然后保存
$git branch //查看当前分支状态,目前只有master一个默认分支
$git branch topic-feature //创建topic-feature分支
$git checkout topic-feature //切换到topic-feature分支
在topic-feature分支下创建新的项目文件config.ini,并提交
$git add config.ini
$git commit -a -m 'add new config file to new branch'
$git push origin topic-feature
现在github的new-project项目中存在两个分支,master和topic-feature 假设topic-feature分支基本稳定了,就可以合并到master主分支里
$git checkout master //切换到master分支
$git merge topic-feature //合并topic-feature分支到master分支
$git push //把合并后的master分支更新至远程github库
现在可以在远程github库的master分支下看到config.ini文件了
小结
Git的模式与Subversion还是有很大不同的,Git主张你随意的创建分支,并可以随时把分支合并到主线分支中.这比较适用于产品有过多的版本维护.
GitHub还是非常好用的,就是需要配置好公钥,如果你是Linux系统,就不会像在Windows下遇到这样那样的问题,毕竟Git是由Linux发展而来的.
一句话!Git是好东西,如果你是Linux爱好者,赶快试用下Git吧!