Git使用规范
Pro Git,第二版,简体中文 https://www.gitbook.com/book/bingohuang/progit2/details
基于git的源代码管理模型——git flow http://www.ituring.com.cn/article/56870
git merge和git merge --no-ff 区别 http://blog.csdn.net/u010940300/article/details/47419069
git rebase简介 http://blog.csdn.net/hudashi/article/details/7664631/
分支划分
辅助分支的创建,让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期
- 主分支
-
- master分支 保持始终是可以上线状态
- develop分支 保持可测,未完成或者不在测试计划内的代码不要提交到该分支下
- 辅助分支
-
- feature分支 功能分支,解决新功能使用 feature-*
- release分支 发布分支 release-*
- hotfix分支 热修补分支 hotfix-*
创建远程develop分支
git br develop master git push origin develop
日常开发
配置Git
邮箱地址要与redmine中邮箱地址相同
git config --global user.name 'zhangsan' git config --global user.email 'zhangsan@email.cn'
克隆远程版本库到本地
git clone git@git***.git . # 拉取远程develop分支到本地 git fetch origin develop:develop
创建本地feature分支
git br feature-1001 develop git co feature-1001 git add * git ci -m 'fix #1001 修改了xxx'
合并feature分支到develop分支
# 合并前, 同步最新的develop分支内容到当前分支 git rebase develop git co develop git merge feature-1024 -m '操作描述' git push
热修复
当生产环境中遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工作。
1、创建本地hotfix分支[hotfix-xxx]
git br hotfix-1025 master git co hotfix-1025 git add * git ci -m 'fix #1025 修改了xxx'
2、合并hotfix分支到master分支
git co master git merge hotfix-1025 --no-ff -m 'v2.1.1 #1025' git push
3、同步更新内容到develop分支
git co develop git merge master git push
发布到生产环境
1、合并develop分支到master分支
当develop分支上的代码通过了所有的测试后,代码已经足够稳定时,就可以将所有的开发成果合并回master分支了
git checkout master git merge develop --no-ff -m '为什么要上线, 此次上线解决了什么问题' git push
2、 打Tag
master分支更新都打上一个新的版本号标签(TAG),供后续代码跟踪使用
git checkout master # 创建Tag git tag v1.0.0 -m 'ios v2.3.0' 35a3960 git push origin v1.0.0 # 删除Tag git tag -d v1.0.0 git push origin :refs/tags/1.0.0
其它
git 配置别名, 方便快速输入命令
git config --global alias.di 'diff' git config --global alias.st 'status' git config --global alias.co 'checkout' git config --global alias.ci 'commit' git config --global alias.br 'branch' git config --global alias.bra 'branch -av' git config --global alias.unstage 'reset HEAD' git config --global alias.last 'log -1' git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" git config --global alias.lga "log --color --stat --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"