GIT使用规范

本规范的目的为提高团队整体的交流和运作效率

使用规范

  1. 能够独立部署的工程使用master和dev两个主干分支,master分支对应线上版本,dev分支对应开发版本; 作为依赖库使用的工作只需要一个master分支即可。master和dev分支只能由开发组长合并及提交,其余人员需要在各自分支上进行开发工作。
  2. GIT提交尽量遵循单次提交的代码是对一个完整但是影响尽量小的功能的修改,不要把对几个功能的修改混在一起提交。
  3. GIT注释的第一行必须以小写task或者bug,加禅道上对应的任务或者BUG的ID,再加半角冒号开头。 注释最少应该写清楚本次做的修改和达到的效果,越详细越好。 注释首行的字符数应该在15-120个之间。如果注释长度多于120字符,则首行写概要性信息,空一行,然后写详细信息,类似于邮件格式。
  4. 分支最好从正式版的tag拉出,正式版tag在这里查看。 分支名字必须有明确的含义,以方便管理。功能上线后,对应的分支应该及时删除。分支名字推荐的命名方法为:以user/开头,加task或者bug,再加禅道上对应的task或者bug的id。其中以user/开头为强制性规定。
  5. 如果因注释而提交不成功,请按照常用操作的 重写上一次注释重写前几次注释 的说明进行注释重写

学习资料

Pro Git中文版

本地环境配置

  1. 根据 GIT安装教程安装GIT
  2. 在任意文件夹(Windows)下右击,点击git bash here打开git bash窗口,执行如下命令,设置个人信息: git config --global user.name "开发人员的中文姓名 git config --global user.email "开发人员的注册邮箱"
  3. 在git bash窗口中执行以下命令,设置默认使用rebase进行pull的合并动作: git config --global pull.rebase true
  4. 本地生成public key. 在git命令行中,执行如下命令: ssh-keygen -C "开发人员的注册邮箱" 这里的邮箱必须与第二步中设置的邮箱一致。输入命令后后续的提示输入都直接按回车,使用默认值即可。 本次操作后会生成文件 {user.dir}/.ssh/id_rsa.pub
  5. 登录到Gerrit服务器并登录,点击右上角用户名->settings->SSH Public Keys ,将id_rsa.pub中的内容复制进去,点击Add即可。
  6. 别名配置,设置完成后可以直接在命令行中用别名代替完整的命令,如 git st = git status。 git config –global alias.st status git config –global alias.ci commit git config –global alias.co checkout git config –global alias.br branch
  7. 在Gerrit服务器中,选择Project->List,找到想要下载的项目并点击进入,按照如下图所示,下载项目。 下载工程源码

常用操作

Clone(下载)项目

git clone project-url  #按照gerrit上的提示操作即可

查看状态

git status   #最常用的操作,会给出明确的提示

查看分支(tag)

git br      #查看本地分支,当前分支颜色是绿色,前面有个 * 
git br -a   #查看所有分支,其中的远程分支可用户切换分支使用

切换分支

git co branch-name  #branch-name指已经存在的分支名称

新建分支

git br branch-name    #从当前分支的当前commit新建一个分支
git co branch-name    #切换到新建的分支,切换的时候会携带未提交的修改

拉取远程修改

git pull    #会拉去包括tag在内的信息

提交修改

git add . –A    #将当前目录下的所有更改都添加到缓存区
git ci          #将缓存区的更改提交到本地库

打标签

git tag tag-name            #在当前commit上打一个tag
git tag tag-name commitId   #在commitId上打一个tag

推送修改

git push          #将当前分支的更改推送到远程分支
git push –tags    #将当前分支及所有新打的tag推送到远程服务器

合并分支

git co master   #将当前分支切换到master
git merge dev   #将dev分支的修改切换到master

删除远程分支或者tag

git push origin –delete branch-name     #删除远程分支,需要gerrit权限
git push origin --delete tag tag-name   #删除远程tag,需要gerrit权限

重写上一次注释

#如果提交后立即发现注释写错了,即只需要重写上一次的注释,在这些如下命令;
git ci –amend

重写前几次注释

慎用git reset操作,尤其是reset已经推送到远程服务器上的commit。
如果发现之前的几次提交注释写错了,找到写错注释的前一个commitId,假设为abcdefg,执行

git reset –-soft abcdefg    #类似将abcdefg之后的git ci命令取消,并且将git add命令合并得到的结果。然后执行
git ci                      #和正常提交一样写注释。

取消发布(慎用!配合操作!)

场景:1.0.0已经发布,计划功能F1,F2,F3,以及不过B1,B2需要在1.1.0发布,
分支F1,F2,F3,B1,B2都已经合到dev上了,并且已经发布了1.1.0-b1,1.1.0-b2两个beta版。
此时F1功能因种种原因需要取消,此时需要执行如下操作:

git co dev           #切换到dev分支。
git tag -d 1.1.0-b1  #删除本地tag 1.1.0-b1
git tag -d 1.1.0-b2  #删除本地tag 1.1.0-b2
git reset –hard 1.0.0  #将所有合并撤销,恢复dev到1.0.0的状态。
git merge F2   #重新合并F2
git merge F3   #重新合并F3
git merge B1   #重新合并B1
git merge B2   #重新合并B2
git tag 1.1.0-b1 #重新打tag 1.1.0-b1
git push origin –delete tag 1.1.0-b1 #删除远程分支1.1.0-b1
git push origin –delete tag 1.1.0-b2 #删除远程分支1.1.0-b2
git push -f origin dev #使用本地dev分支强制更新远程dev分支
git push -tags   #推送本地tag到远程服务器

GIT工作流程图

GIT工作流