做者:轩邈git
工做流本质上是项目的流程管理和开发的协同约定。本文旨在经过有效的项目流程管理和高效的开发协同约定,提高减小项目的错误率,提高项目的稳定性,最终提升开发效率。github
工做流本质上是项目的流程管理和开发的协同约定,有效的项目流程管理和高效的开发协同约定有助于提高减小项目的错误率,提高项目的稳定性,最终提升开发效率,稳定而高效的产出。小程序
本篇主要以示例的方式带你们回顾一下咱们在工做中可能使用到的几种经常使用工做流。bash
Gitflow工做流中开发和发布和开发双分支并行的模式方便咱们在发布时流畅过渡,而且提供一个缓冲的空间,方便检查和恢复,这应该也是一些大型项目经常使用的一种模式。微信
示例:app
1. 建立中央仓库ssh
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. 开发新功能ui
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
复制代码
从中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
复制代码
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
复制代码
跟踪远程分支
git show-ref master
branch --set-upstream-to=refs/remotes/origin/changeTheme changeTheme//本地有该分支
git checkout --track origin/[分支名] //本地没有该分支
复制代码
原文连接: tech.meicai.cn/detail/57, 也可微信搜索小程序「美菜产品技术团队」,干货满满且每周更新,想学习技术的你不要错过哦。