1.gitflow工作流
-
gitflow工作流,指的是使用git工具的工作流程和方式.
-
分支管理策略:
-
项目存在两个长期分支
-
master: 主分支
用于存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的分布版
-
develop: 开发分支(dev)
用于日常开发,存放最新的开发版.
-
项目存在三种短期分支。
功能分支(feature branch) 补丁分支(hotfix branch) 预发分支(release branch) 注意,一旦完成开发,短期分支就会被合并进develop或master,然后被删除.
2.使用gitflow工作流的开发流程
-
普通开发人员:
1.创建本地dev分支, 并和远程dev分支关联. 2.拉取最新的dev代码 3.创建功能分支f_xxx. 4.编写代码, 提交分支, 推送到远程(备份, 合并请求) 5.切换到dev, 删除已完成的功能分支. 重复2-5.
-
高级程序员/专门合并请求的程序员
1.收到合并请求. 2.处理合并请求. 正常合并 代码冲突, 拒绝合并
-
分支命名习惯
f_xxx: 功能开发的分支 b_xxx: 修复bug的分支 r_xxx: 发布新版本的分支
3.git练习
git clone http://git.meiduo.site/jiuye14/practice_project.git
1.长期存储密码:
git config --global credential.helper store
2.配置作者信息, 分支上显示的名字和邮箱:
git config user.name "王老师"
git config user.email "[email protected]"
3.把项目克隆到本地:
git clone http://git.meiduo.site/jiuye14/practice_project.git
4.以远程的dev分支,创建一个自己的本地分支,并切换到本地分支。
git checkout -b dev origin/dev
5.以dev分支,创建自己的功能分支f_first:
# 切记: 要在当前的dev分支下
git checkout -b f_first_名字拼音
6.在practice_project文件夹中创建自己的目录(以拼音命名):
mkdir wangzhiqin
7.在自己的文件夹中添加一个readme文件,写上自己的描述:
vi readme
8.把修改提交到暂存区
git add 自己的文件夹名称
9.把暂存区的内容提交到仓库
git commit -m '这是王老师的第一次提交'
10.把自己的f_first_名字拼音 分支提交到gitlab
git push -u origin f_first_wzq
11.在gitlab上面发起请求合并
12.告诉有权限合并请求的程序员,等待合并。
13.合并成功后, 切换回dev分支,并拉取最新的提交
# 加上-u参数后,后面就可以执行git pull/push了。
git pull -u origin dev
14.删除功能分支
git branch -d f_first_wzq
-
小结
1.后面每天的练习的代码,每个人每天练习完后都提交到practice_project项目下,然后申请合并到dev中。 2.每个人的代码都写在自己拼音的文件夹下
4.解决git冲突
-
冲突原因
在两个commit 之间同一个文件中同一行内有不同的内容。
-
冲突演示
f_login_num100_wzq分支: 1.创建f_login_num100_wzq分支修改login.py文件的第二行内容 git checkout -b f_login_num100_wzq vi login.py num2 = 100 2.提交并推送到远端,并提交合并->合并成功. git commit -am 'num2=100' git push -u origin f_login_num100_wzq f_login_num1000_wzq分支: 1.切换回dev分支, 创建f_login_num1000_wzq分支修改login.py文件的第二行内容 git checkout dev git checkout -b f_login_num1000_wzq vi login.py num2 = 1000 2.提交并推送到远端,并提交合并 -> 有冲突,拒绝合并 git add wangzhiqin/login.py git commit -m 'num2=1000' 3.切换回dev, 并拉取最新commit git checkout dev git pull 4.切换到f_login_num1000_wzq分支, 并把dev分支合并到当前分支, 形成冲突 git checkout f_login_num1000_wzq gi