Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)

上一节《Git学习手记11:查看、克隆、提取、拉回、删除Git仓》

Git最伟大的用处是支持多人协作开发(Collaboration),所以必须理解Git 工作流(workflow),下面一篇文章,非常详细的介绍了

《深入理解学习Git工作流(git-workflow-tutorial)》

一个“好的”工作流的评价标准:轻松解决协作开发问题的同时,不会增大不必要的工作开销

本文主要总结简单常用的集中式工作流(Centralized Workflow)

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第1张图片

代码库由服务器上的远程仓库统一管理,所有开发人员在开发代码前,都统一将项目版本库从远程仓库克隆(clone)到本地,开发修改调试完毕后,再推送(Push)回服务器的远程仓。该工作方式,简单易懂、逻辑清晰。

假设有个中央仓:[email protected]:ILoveAmy/LearnGit.git

有三个程序员:Alex、Bobby、Cindy

大家都在自己的文件夹下,启动Git Bash

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第2张图片

然后从Git仓Clone 版本库到本地

$ git clone [email protected]:ILoveAmy/LearnGit.git

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第3张图片

Alex的工作

新建一个dev分支

$ git checkout -b dev

接着开始开发工作,新建了AlexFunc.py文件,并添加了readme.txt的说明信息

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第4张图片

接着用命令:

$ git status  查看状态

$ git add --all  把所有文件提交到暂存区

$ git commit -m "add AlexFunc.py -- Alex20180403" 提交到版本库

开发工作(dev)做完后,重新切换到主分支(master)

$ git checkout master

转到master分支后,由于所有工作是提交到dev分支的,所以master分支还保留着clone时候的样子

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第5张图片

用命令:

$ git merge dev 合并分支,这样master跟dev同步起来

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第6张图片

最后用命令:

$ git push origin master 把当天完成的工作推送到远程服务器,结束当天的工作。

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第7张图片

Bobby的工作

$ git checkout -b dev 新建一个dev分支

$ git add --all  把所有文件提交到暂存区

$ git commit -m "add BobbyFunc.py ,Bobby20180403" 提交到版本库

$ git checkout master 转移到master分支

$ git merge dev 合并分支

$ git push origin master 把当天完成的工作推送到远程服务器,但是服务器显示:rejected!(拒绝)

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第8张图片

提示信息里面清楚说明:远程库(Remote)里面包含有本地没有的工作,你必须先把远程的工作集成好(git pull)再推送

hint: Updates were rejected because the remote contains work that you do not have locally. This is usually caused by another repository pushing to the same ref. You may want to first integrate the remote changes (e.g., 'git pull ...') before pushing again.

用命令:

$ git pull 从远程拉回版本库并合并到本地

$ git add --all  把所有文件提交到暂存区

$ git commit -m "add Bobby's work, Bobby20180403" 提交到版本库

$ git push origin master 把当天完成的工作推送到远程服务器,由于冲突都解决好了,所以提交成功,如下所示:

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第9张图片

Cindy的工作

$ git checkout -b dev 新建一个dev分支

$ git add --all  把所有文件提交到暂存区

$ git commit -m "add CindyFunc.py, Cindy20180403" 提交到版本库

$ git checkout master 转移到master分支

$ git merge dev 合并分支

$ git commit -m "add CindyFunc.py, Cindy20180403" 

$ git pull 从远程拉回版本库并合并到本地

$ git add --all  把所有文件提交到暂存区

$ git commit -m "add Cindy work, Cindy20180403"  提交到版本库

$ git push origin master 把当天完成的工作推送到远程服务器

下图展示了整个流程

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第10张图片

用命令

$ git log --graph --pretty=oneline --abbrev-commit

可以看到分支合并情况

Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch)_第11张图片

下一节《Git学习手记13:分支(branch)管理策略》

你可能感兴趣的:(Git学习手记12:多人协作(Collaboration)、工作流(workflow)与分支(branch))