「Git」常用工作流介绍

936 阅读4分钟

作者:轩邈

简介

工作流本质上是项目的流程管理和开发的协同约定。本文旨在通过有效的项目流程管理和高效的开发协同约定,提升减少项目的错误率,提升项目的稳定性,最终提高开发效率。

Git常用工作流介绍

一、工作流

​ 工作流本质上是项目的流程管理和开发的协同约定,有效的项目流程管理和高效的开发协同约定有助于提升减少项目的错误率,提升项目的稳定性,最终提高开发效率,稳定而高效的产出。

​ 本篇主要以示例的方式带大家回顾一下我们在工作中可能使用到的几种常用工作流。

一、Gitflow工作流

​ Gitflow工作流中开发和发布和开发双分支并行的模式方便我们在发布时流畅过渡,并且提供一个缓冲的空间,方便检查和恢复,这应该也是一些大型项目常用的一种模式。

示例

1. 创建中央仓库

2. 创建开发分支(为master分配) 管理者:

git branch develop
git push -u origin develop //指定upstream

开发者:

git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop

3. 开发新功能

git checkout -b xuanmiao develop
touch xuanmiao.file
git status
git add .
git commit -m '新功能开发完成'

4. 开发分支整合新功能

git pull origin develop
git checkout develop
git merge xuanmiao
git commit -am'合并xuanmiao分支'
git push
git branch -d xuanmiao

5. 推荐使用mc-pr,提高PR效率 github.com/meicai-fe/p…

6. 发布

git checkout -b release-0.1 develop //该分支专门用于清理发布、执行所有测试、更新文档和其它为下个发布做准备操作的地方

git checkout master
git merge release-0.1
git push
//Git有提供各种勾子(hook),即仓库有事件发生时触发执行的脚本。可以配置一个勾子,在你push中央仓库的master分支时,自动构建好对外发布。

git checkout develop
git merge release-0.1
git commit -am '合并release-0.1分支'
git push

* git push origin release-0.1  //如果没有自动发布脚本,可以选择将开发分支推送到仓库,也可删除,有tag备份,不过为了代码的整洁性不推荐。
git branch -d release-0.1

7. 打tag

git tag -a 0.1 -m "发布0.1版" master
git push --tags

8. 发现bug

git checkout -b issue-#001 master
# Fix the bug
git checkout master
git merge issue-#001
git push

git checkout develop
git merge issue-#001
git push
git branch -d issue-#001

二、Forking工作流

​ 从中Gitflow我们会发现几个问题,比如合并分支时master和开发分支重复操作,管理者和开发者不够分离等。接下来我们看forking工作流。 ​ Forking工作流充分利用了Git中PR、分支管理和多人协作的优势,是非常通用和强大的一种模式。可以应用多种工作场景(也可以用来接受团队外的PR,许多开源项目使用这种模式)。

示例

1. 仓库管理者创建裸库

git init --bare repo.git //github创建一个仓库就可以了

2. 开发者fork正式仓库

git clone 仓库地址   //origin远程别名指向开发者自己的服务端仓库,而不是正式仓库。
git remote add 正式仓库名 正式仓库地址

3. 开发功能

git checkout -b some-feature
// 开发新功能
git commit -a -m "新功能开发完成"

4. 开发完成

git push origin feature-branch

5. 发起pull request(推荐使用mc-pr

6. 项目管理者集成开发者的功能

*7. 开发者和正式仓库做同步 *

git pull 正式仓库名 个人仓库名

三、其他常用工作命令

1. 重写上次提交历史(commit错误 重新编辑一下提交的comment,修改多个可使用git rebase -i HEAD~n)

方法一:

git commit --amend

方法二:

git reset --soft HEAD^      

//编辑文件                

git commit -a -c ORIG_HEAD

2. 删除远程分支

git push origin :分支名

3. 删除git仓库中untracked files

   git clean -fd

4. 克隆指定分支

   git clone -b appointBranch 仓库地址

*5. 统计每个人的代码行数 *

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done 
  1. stash常用操作

    git stash list //查看stash清单
    git stash show //查看内容
    git stash apply //恢复但不删除stash
    git stash pop   //恢复并删除stash
    git stash apply stash@{0} //恢复指定stash
    git stash drop stash@{0} //删除指定stash
    git config --global alias.stash-unapply '!git stash show -p | git apply -R'
    git stash-unapply //撤销应用的stash
    
  2. 跟踪远程分支

    git show-ref master
    branch --set-upstream-to=refs/remotes/origin/changeTheme  changeTheme//本地有该分支
    git checkout --track origin/[分支名] //本地没有该分支
    

原文链接: tech.meicai.cn/detail/57, 也可微信搜索小程序「美菜产品技术团队」,干货满满且每周更新,想学习技术的你不要错过哦。