# git分支练习用项目 为了让项目成员能够熟悉的使用git的分支功能来更好的进行开发,特制作了本项目供所有项目成员练习
目的是让所有项目成员都能正确的使用git来对版本进行管理,而不是把git当成又一个svn
如果是不熟悉git使用的成员,建议先阅读[简单的git教程](https://git-scm.com/book/zh/v2)
本项目的分支分类参考了[这篇文章](http://www.ruanyifeng.com/blog/2012/07/git.html)
## 项目分支介绍 ### master分支 这是项目的正式版本分支,只有项目的维护者可以操作该分支
通常,除了紧急bug修改直接push以外,该分支一般从develop分支合并而来
master分支包含每一次正式发布后的版本,不包括开发过程中的任何版本
### develop分支 这是项目的开发版本分支,项目成员负责的部分开发完成时应该把分支合并到此分支
若需要发布到正式站点,则需要向维护者发布合并请求,并等待维护者把develop分支合并至master分支
develop版本包含了每一次**完整的功能修改**的版本,不包括功能开发中途的版本
### 功能分支 功能分支应以“feature-”为前缀,当开发一个新功能时,应创建一个功能分支,并在功能开发完成后,将其合并到develop分支上
例如,开发用户登陆功能的时候,可以新建分支名为“feature-userlogin190315”,并在功能完成后将其并入develop分支
若功能开发完成后,产品表示不需要上线,也可以先挂着不合并到develop分支
当功能合并到develop分支后,应及时删除该分支
### bug修复分支 bug修复分支应以“fix-”为前缀,当一个版本遭遇bug时,创建一个bug修复分支,并将其合并到master和develop分支
典型的bug修复分支命名,如“fix-ch190315”
在完成bug修复后,应及时删除该分支
### release分支 仅由维护者使用的分支
在维护者担心本次发布可能会导致项目无法正常运行的时候,可以临时从develop分支下建立该分支,在确认项目可以正常运行后再合并到master分支
在完成合并以后,应及时删除release分支
## 如何操作分支 1. 创建并切换到指定分支 ``` git checkout -b 分支名称 ``` 在进行具体任务的开发前,请使用该命令创建功能分支和bug修复分支。
2. 切换到指定分支 ``` git checkout 分支名称 ``` 在切换分支前,记得先把当前的修改提交到自己的临时分支上。以确保切换过去的时候项目是干净的。
3. 第一次推送自己的临时分支到远程库 ``` git push --set-upstream origin 分支名称 ``` **若你的当前分支已经存在于远程库,那么只需要简单的git push即可**
4. 把指定分支合并到当前分支 ``` git merge 分支名称 ``` 权限调整后,开发人员只能把自己工作的临时分支合并到develop分支。而如果想要合并到master分支,则只能通过项目管理页面左侧的“合并请求”来建立请求,并让项目维护者进行合并
**合并分支时,一定要注意处理分支的冲突**
5. 删除临时分支 ``` git branch -d 分支名称 ``` 当一个临时分支不再需要之后,应该将其删除以避免项目分支太多导致项目混乱
通常一个功能分支在合并到develop分支之后就可以删除了,而一个bug修正分支则必须等到维护人员将其合并到master分支以后才可删除
6. 关于合并分支时冲突的处理 具体参照本页顶部提及的[这篇文章](https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6)下方的“遇到冲突时的分支合并”一节
## 作业 在本项目下面,有个名为work的文本文件,所有成员需要通过修改该文件来完成作业
**注意:每一次提交代码的时候都要记得遵守编码规范,提交说明不能是没有意义的内容**
每一个项目成员必须**按顺序**完成以下任务来完成作业:
1. 在任意目录下拉取本项目 2. 在develop分支下新建一个功能分支,命名为“feature-”+项目成员名字拼音或拼音缩写(如“feature-chenhao”) 3. 在新的分支上打开work.txt文件,在最后一行添加上自己的名字和当天日期,并换行(如“陈昊 2019-03-15”) 4. 完成修改后,提交到功能分支。**注意:是提交到功能分支,而不能直接提交到develop分支** 5. 确认提交成功后,将功能分支合并到develop分支 6. 删除功能分支,并推送develop分支到远程库。**注意:除非有需求是当前功能分支需要和其他项目成员一起协作完成,否则不建议推送功能分支到远程库** 7. 发起合并请求,等待项目管理人将develop分支合并到master分支 8. **在项目管理人完成分支合并以后**,从master分支下新建一个bug修复分支,命名为“fix+”+自己的拼音缩写+当天日期(如“fix-ch190315”) 9. 在work.txt文件中,有自己的名字那一行的行末,添加文本“ bugfixed”+当天日期(如“bugfixed190315”) 10. 提交修改到bug修复分支,将其合并到develop分支以后,分别推送develop分支和bug修复分支到远程库,同时发起bug修复分支合并请求 11. 等待项目管理人把bug修复分支合并到master分支,任务完成