gitflow : git 工作流
-
建立和远程库的连接,clone项目到本地
- 默认克隆master 分支:
git clone 项目git远程仓库地址
- 指定克隆的分支(如develop分支):
git clone -b develop 项目git远程仓库地址
- 指定克隆分支到指定目录(如克隆develop 到 目录my_project):
git clone -b develop 项目git远程仓库地址 my_project
- 默认克隆master 分支:
- 基于master分支,创建develop分支
/* 切到master分支 */
git checkout master
/* 克隆master分支->得到develop分支,克隆完成后自动检出到develop分支 */
git checkout -b develop
/* 推送develop分支到远程仓库 */
$git push origin develop
-
基于develop分支,创建自己的开发分支dev_liping
方法一:在远程仓库基于develop新建自己的分支dev_liping -> 克隆dev_liping分支到本地进行开发
/* 克隆远程仓库自己的开发分支dev_liping */
git clone -b dev_liping 项目git远程仓库地址
方法二:在本地仓库基于develop新建自己的分支
/* 切到develop分支 */
git checkout develop
git checkout -b dev_liping
- 本地开发流程
/* 查看分支结构 */
git branch -v
/* 提交修改到缓冲区 */
$git add .
/* 提交修改到本地仓库 */
/* 若是修复的BUG,应该在修改说明提示bug#ID,多个bug用逗号分隔,例如bug(#002,003) */
/* 若是完成了一个指派的任务,应该在修改说明的最开始添加Task#TaskID,例如Task#165 */
$git commit -m -fix:bug修改(#002,003)
/* 每完成一个功能点可以对代码进行打包(有个tag标签) */
$git tag -a <tagname> -m "简要说明增加/修复/删除了什么功能"
git add -A和
git add . git add -u在功能上看似很相近,但还是存在一点差别
- git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
- git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
- git add -A :是上面两个功能的合集(git add --all的缩写)
- 推送代码到远程仓库
场景一: 单人开发模式(不存在分支合并),仅在develop分支上开发
/* 拉去远程仓库上最新代码(拉下来后可能会和本地代码有冲突) */
git pull
/* 解决代码冲突后,推送到远程仓库*/
git push origin develop
场景二: 多人协作开发模式(每人有自己的开发分支dev_liping,平时维护自己的分支,需要合并时再合并到develop分支上)
/* 当前开发分支dev_liping 修改后提交到本地仓库 */
git add .
git commit
/* 自己的开发分支dev_liping 推送到远程仓库备份 */
git push origin dev_liping
/* 切到开发分支develop, 拉取最新代码 */
git checkout develop
git pull
/* 合并dev_liping -> develop,有冲突的需处理冲突 */
git merge dev_liping
/* 推送到远程develop分支 */
git push origin develop
- 开发阶段性结束,进入测试阶段
/* 克隆develop分支 -> 得到测试分支release */
git checkout develop
git checkout -b release
/* 把测试分支release 推送到远程仓库 */
git push origin release
- 测试完成后,在测试版本修复bug,提交并合并到develop
/* 拉取测试分支 */
git checkout -b release origin/release
/* 修复bug后提交并推送至远程仓库测试分支release */
git add .
git commit -m -fix: bug修复 (#2396,2397,2398,2399)
git push origin release
/* 测试验证bug修复无误后,切到develop,拉取最新代码 */
git checkout develop
git pull
/* 把release分支合并到develop中 */
git merge release
- 开发和测试都阶段性告一段落后(已修复bug),合并develop到master
/* 切到master主分支,准备合并 */
git checkout master
/* 合并develop 到master 分支 */
git merge develop
- 阶段性完成, 打一个里程碑tag包
/* 创建里程碑Tag: git tag -a <versionsinfo> -m <remark> */
git tag -a v1.1.0 -m 结算中心 v1.1.0发布
/* 推送里程碑Tag 到 远程仓库 */
git push origin v1.1.0
/* 删除远程仓库tag */
git push origin :refs/tags/v1.1.0
(备注:如有讲错请在评论区指出,我可不能误人子弟啊哈~~~ 原创文章,欢迎转载,转载请注明出处,多谢支持~~~)