有关git的參考资料

  • pro git中文版, 最好的git书籍

http://git-scm.com/book/zh

  • 图解git

http://marklodato.github.com/visual-git-guide/index-zh-cn.html

  • git交互式学习

http://try.github.com/levels/1/challenges/1

  • Git分支管理策略

http://blog.jobbole.com/23398/

  • type3的关于git和Gerrit资料

http://wiki.typo3.org/Git_Gerrit

  • egit 和 gerrit的实践应用

http://wiki.typo3.org/Contribution_Walkthrough_with_EGit

有关gerrit
的參考资料

注冊帐号

http://review.bitcomm.cn注冊用户,採用的是openid统一认证。直接使用公司的google邮箱就能够了。

注冊的时候,注意:

  • 设置自己的username。必须为英文或者数字,这个后面授权须要用到,比方我选择的是 refactor
  • 导入自己的公钥,这个在 git 进行 review操作的时候。授权须要用到

注冊完了以后,能够看到 testing 项目,能够进行练习和測试。

其余的项目,联系项目经理进行授权,将以下的信息发送给项目经理:

注冊的邮箱、ssh公钥和相应的项目

工具安装

Windows

  • 安装git 工具

因为眼下git的命令行功能和稳定性比图形界面的egit等强,大家在代码递交时。还是使用Windows或者Linux的命令行,windows下能够採用:

windows下的命令行工具:

http://msysgit.github.com

windows下的图形工具:

https://code.google.com/p/tortoisegit/

下载安装windows版本号的python。一般能够选用2.7.3

http://www.python.org/download/releases/2.7.3/

下载安装windows版本号的setuptools

http://pypi.python.org/pypi/setuptools

下载、解压、安装 pip 软件

http://pypi.python.org/pypi/pip#downloads

进入解压以后的文件夹,然后运行安装:

  1. python setup.py install

使用pip安装 fabric 和 git-review

  1. pip install fabric git-review

Ubuntu

  1. sudo aptitude install python-pip
  2. sudo pip install fabric git-review

CentOS

  1. sudo yum -y install python-setuptools python-devel python-pip
  2. sudo pip-python install fabric git-review

导出项目,初始设置

配置递交代码人信息:

  1. git config --global user.name "Peng Yong"
  2. git config --global user.email ppyy@pubyun.com

从git取出代码:

  1. git clone ssh://git@git.bitcomm.cn:2203/testing.git

注意选用自己须要的项目名称替代 testing

设置git review 系统, 第一次须要回答一个username,就是你在review系统的username

  1. git review -s

假设没有安装 git review 软件包。则手工设置:

  1. git remote add gerrit ssh://refactor@review.bitcomm.cn:29418/testing.git
  2. scp -P 29418 refactor@review.bitcomm.cn:hooks/commit-msg .git/hooks/

注意:

  • 选用自己须要的项目名称替代 testing
  • 使用自己的username替代 refactor

日常开发流程

当须要改动一个bug,或者开发新功能时, 须要分几部:

获取最新的代码, 防止和他人冲突

  1. git fetch origin

每个开发(bug。feature),都创建一个独立的开发分支。不要在 master上做,一般一个单元开发创建一个分支,互相不混淆。否则假设评审不通过。又一次改动会麻烦:

  1. git checkout -b dev/username/typefix
  2. git checkout -b dev/username/login_module

改动代码。然后检查代码:

  1. git status
  2. git diff

假设要放弃commit,使用 :

  1. git reset --soft HEAD^

本地递交代码:

  1. git commit a

注意。看一下这些文件是否都要递交,写好简要、清晰的递交日志。

上传代码。等待评审:

  1. git review

假设没有安装 git review 软件。则手工上传。等待评审:

  1. git push gerrit HEAD:refs/for/master

假设代码审查通过。合并完毕以后,能够删除这个分支:

  1. git checkout master
  2. git branch -d dev/username/typefix

假设评审不通过,须要再次改动代码,则继续在原来的分支改动代码

切换到原来的开发分支:

  1. git checkout bug/typefix

改动代码…

然后递交(注意,一定使用 amend选项,这样能够继续递交在原来的review单号上)

  1. git commit -a --amend

上传代码等待审批

  1. git review

假设没有安装 git review 软件,则手工上传,等待评审:

  1. git push gerrit HEAD:refs/for/master

假设代码审查通过,合并完毕以后,能够删除这个分支:

  1. git checkout master
  2. git branch -d bug/typefix

审批通过以后。gerrit提示有冲突怎么办

參见合并的參考文档:

冲突产生。是因为两个开发者,改动了同一个文件。

解决的方法:

  1. git fetch origin
  2. git rebase origin/master

git合并能力非常强,一般的冲突上面能够自己主动攻克了。假设冲突在同一个地方,须要手工解决。

这个情况,请联系资深project师帮助一起解决。

须要用编辑器改动对应文件, 然后标志这些文件冲突解决,继续rebase:

  1. git add -u
  2. git rebase --continue

最后递交审查:

  1. git commit -a --amend
  2. git review

私有分支的使用

私有分支的应用场景

  1. 在正式递交代码之前,开发调试往往须要和同事协同开发
  2. 须要部署到測试机上进行測试, 但又不想递交到master
  3. 个人在公司、家里、工地进行代码的同步
  4. 个人须要开发一个较复杂的功能,在递交评审之前,须要频繁递交代码, 而且为了代码安全性,须要上传到远程备份

这时就须要使用gerrit的私有分支, 详细的步骤是:

私有分支的命名:

  1. dev/username/branchname

当中:

  • dev 私有开发分支的前缀,必须是 dev
  • username 你的 gerrit系统的用户名
  • branchname 你创建的私有分支名字,能够创建多个分支

创建本地的私有分支

  1. git checkout -b dev/refactor/fabric

开发。然后递交到本地,这个和普通开发一样

上传到 gerrit,并自己主动同步到 公司的官方git源(一般叫origin)

  1. git push gerrit HEAD:dev/refactor/fabric

其它同事切换到这个私有分支,而且获取刚才的改动

  1. git fetch origin
  2. git checkout dev/refactor/fabric
  3. git pull

在这里能够进行改动和递交。实现协同开发和代码同步

这个分支,经过測试以后,准备递交评审之前。一般使用 rebase 进行适当的合并, 然后递交

  1. git rebase -i HEAD~10
  2. git review

假设这个分支不再须要了,删除这个分支(本地和远程)

  1. git push gerrit :dev/refactor/fabric
  2. git checkout master
  3. git branch -d dev/refactor/fabric

fabric的使用

为了提供工作效率,减少出错的几率。反复性的工作。尽量使用 fabric自己主动部署工具:

  • 生产机上的部署

    fab

  • 測试分支的部署

    fab branch:dev/refactor/fabric deploy

版本号管理规则

一般线上执行的系统,仅仅採用一个
master 主线的方式进行管理

也就是开发者的代码。通过评审以后,直接merge到master分支;master分支也是生产机上执行的代码。这就要求有质量控制过程,防止错误导致系统的严重错误。

  • 递交的代码。要是一个原子操作,具有高内聚性,即一次递交的全部代码完毕且仅完毕一个功能,联系紧密,缺一不可
  • 递交的代码,要具有上线标准,要是一个可执行的合格的代码
  • 评审一般都必须至少一个以上的人评审过,最好是同组的开发者评审,项目经理或者资深开发者审批。

    评审的过程,也是结对编程的思想,能够互相熟悉代码,互相学习提高,便于统一代码风格。提高代码质量。

假设一个
feature 是一个须要较长时间开发。比方添加一个短信验证的功能,须要一周时间

在自己的这个开发分支内。能够採取小步快跑的方式不断递交到本地的git。

在开发完毕以后。在上传到 reviewserver进行评审前,须要使用 rebase 命令。将这些多次递交适当进行合并然后上传。

记住,每一次递交在Gerrit评审server上。都必需要单独评审审批。假设一个功能有非常多小的改动组成。这些小的改动能够适当合并。详细方法是:

  1. git checkout master
  2. git pull origin master
  3. git checkout your-feature-branch
  4. git rebase -i master

假设须要进行改版。会延续几个月的大量改进

须要在 gerrit 评审系统内创建新的开发分支,比方devel分支,而不使用 master 进行管理,以便进行代码的隔离。

改版完毕以后,将代码从develp合并到master分支。

这时,改版递交代码和评审,都在develop分支进行。上传命令採用。

  1. git review develop

生产机上任然使用 master分支。 这时。一般性的功能改进和bug修正,仍然递交到 master 分支。而且定时从 master merge到develop分支。以便降低冲突,降低以后 develop合并到 master的难度。

FAQ

  • 评审没有通过,可是原有开发分支已经删除。怎样恢复这个分支,继续改动代码

在gerrit上找到这个评审单。定位到响应的patchset,里面有获代替码、恢复分支的方式链接, 比方:

  1. git fetch ssh://refactor@review.bitcomm.cn:29418/testing refs/changes/07/7/1 && git checkout FETCH_HEAD
  2. git checkout -b my_branch
  • 怎样获取通知邮件

对于关注的项目。能够获取通知邮件,方法是选择菜单:

  1. Settings - Watched Projects

然后使用 Browse button选择响应的项目,然后选择“Email Notifications”的类型,一般所有打勾

  • 怎样gerrit评审系统的键盘快捷键

gerrit是google开发的软件,相同支持Google风格的快捷键。类似Gmail的风格。

使用快捷键。能够提高阅读和评审的速度。使用问号 "?

" 能够寻求快捷键的帮助。

  • 提示"Missing Change-Id in commit message"

这是因为没有下载hook, 生成Change-Id。这个Change-ID是gerrit一个必须的重要标志,多次改动同一个问题的时候,会相应到一个单子。解决方法。

  1. scp -P 29418 refactor@review.bitcomm.cn:hooks/commit-msg .git/hooks/

然后再次递交:

  1. git commit -a --amend
  2. git review
  • Backporting a change to other branches

比方。一个master分支,一个release分支,递交进入master的分支中。有某个bugfix或者新特性须要合并回release分支:

http://wiki.typo3.org/Contribution_Walkthrough_with_CommandLine

  1. git fetch --all
  2. git checkout -b rfc/4-4/1234 origin/<release-branch>
  3. git cherry-pick <revision-id>

去掉Change-Id, Reviewed-*, Tested-by等日志信息

  1. git commit -a --amend
  2. git review <release-branch>

版权声明:本文博客原创文章,博客,未经同意,不得转载。

gerrit git使用的更多相关文章

  1. gitlab & gerrit & git & repo & jenkins

    Omnibus GitLab documentation(中文安装说明) 在自己的服务器上部署 GitLab 社区版->较为全面 GIT & REPO & GERRIT (三) ...

  2. Jenkins + Gerrit + Git

    参考:https://blog.csdn.net/mr_raptor/article/details/76223233 https://www.cnblogs.com/kevingrace/p/565 ...

  3. CentOS安装gitlab,gerrit,jenkins并配置ci流程

    CentOS安装gitlab,gerrit,jenkins并配置ci流程 By Wenbin juandx@163.com 2016/4/9 这是我参考了网上很多的文档,配置了这三个软件在一个机器上, ...

  4. Centos 安装配置gerrit

    关闭selinux,不然nginx的反向代理会报错connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting ...

  5. gerrit使用教程

      注:使用时把“user”替换为自己的账号,例如 ueapp: ssh://huang.fei@10.0.64.16:29418/jonet2_0_app_ueapp.git 新的环境下需要先注册g ...

  6. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  7. [gerrit] Auto Add Reviewer When Push Code

    1. ${PROJECT_ROOT}/.git/config 加入如下代码 [remote "review"] url = ssh://${username}@codeserver ...

  8. centos 安装http协议的git server

    1.服务器端安装httpd,git,gitweb等 1 #yum install httpd git git-daemon  gitweb 2.服务器端初始化仓库 1 2 3 #mkdir -p /d ...

  9. android源码GIT下载

    mkdir device cd device git clone https://android.googlesource.com/device/common.git mkdir htc cd htc ...

随机推荐

  1. cocos2D(四)---- CCSprite

    在介绍CCSprite之前,先要理解游戏开发中的一个核心概念:精灵.精灵也称为游戏对象,它能够用来表示游戏中的不论什么物体,比方敌人.子弹.甚至是一个背景图片.一段文字.CCSprite能够说是在co ...

  2. firebug登陆之数据包分析

    登陆之数据包分析 工具: python-urllib2   |  firefox+firebug或者chrome,用浏览器打开登陆页面之后,按F12键会默认打开开发者工具或者启动firebug,点击n ...

  3. MooTools,jQuery库的一些比对

    jQuery与MooTools库的一些比对   今天就我自己的一些认识比对下这两个JS框架,更多的是希望大家能够对MooTools这个JS框架有更多的认识.毕竟,大多数从事web前端的人对上手容易的j ...

  4. 谈Web应用系统的可维护性

           每一个软件开发人员都十分清楚, 当软件构建得越来越复杂时, 可维护性就成了一个很突出的问题. 如何在构造软件系统的过程中始终保持可控制的可维护性呢?          一. 整体组织   ...

  5. HDU 4454 - Stealing a Cake(三分)

    我比较快速的想到了三分,但是我是从0到2*pi区间进行三分,并且漏了一种点到边距离的情况,一直WA了好几次 后来画了下图才发现,0到2*pi区间内是有两个极值的,每个半圆存在一个极值 以下是代码 #i ...

  6. MySQL的一些基本操作

    近期開始学习MySQL,主要是通过书籍,和看燕十八老师的视频,然后通过博客记录自己的学习过程. 登入数据库 zhiniaobu@telunsu-K55VD:~$ mysql -uroot -p Ent ...

  7. pygame系列_font游戏字体

    在pygame游戏开发中,一个友好的UI中,漂亮的字体是少不了的 今天就给大伙带来有关pygame中字体的一些介绍说明 首先我们得判断一下我们的pygame中有没有font这个模块 1 if not ...

  8. Java EE (11) - 影响性能的因素

    垂直层(Tier)影响性能的因素 资源层数据库性能通常考虑以下方面的优化(MySQL为例):--使用哪种存储引擎:MyISAM vs. InnoDB, MERGE, MEMORY, Federated ...

  9. [Unity3D]Unity3D持久性数据的游戏开发PlayerPrefs采用

    大家好,我是秦培,欢迎关注我的博客,我的博客地址">blog.csdn.net/qinyuanpei. 博主今天研究了在Unity3D中的数据持久化问题.数据持久化在不论什么一个开发领 ...

  10. dpdk组态 千兆网卡 驱动 失败 原因分析及 解决方案

    dpdk版本号是1.7.1稳定版,server它是ubuntu12.04LTS x86 64bit 绑定默认驱动程序千兆网卡ixgbe失败 # ./dpdk_nic_bind.py -b ixgbe ...