一般工作流程如下:
- git clone 克隆远程资源到本地目录,这时成功创建本地仓库跟master分支(但是开发不能在master分支上开发,需要再建一个分支);
- 从本地仓库(此时的本地仓库是master分支)中checkout代码然后进行代码修改;
$ git checkout -b dev //从本地仓库分支MASTER上再建一个分支,并且选择创建的分支为当前工作分支(-b 创建并选择) //这里的dev分支只是举例,实际工作当中我们的分支名,一般都会描述我们要再该分支上编写新代码的目的,比如,如果是解决bug,那么就可以用bug作为前缀! //实际dev分支,一般是一个测试环境的分支,即对应测试环境运行的代码,不允许直接在该分支上进行开发! Switched to a new branch 'dev' $ git checkout -b dev origin/dev //创建远程origin的dev分支到本地,将远程dev分支跟本地dev分支对应起来
- 本地在修改之后,可以通过git status 查看修改的文件。然后使用git add 添加修改的文件到暂存区,在添加到暂存区之前,即我们的代码开发操作都是在工作区上执行的!
- 在添加之后,可以使用git commit添加到本地仓库(此时的本地仓库是dev分支),本地仓库中保存修改的各个历史版本(本地的历史版本);
- 我们最终是要将开发的新功能合并到远程仓库master分支的,此时就涉及到了需要将dev分支合并到master分支的步骤!
- 又由于实际工作当中基本都是多人协作开发,这也就是git是分布式管理控制工具的目的。
- 我们直接将本地dev分支push到远程dev分支,完了再通过GITHUB将远程dev分支合并到远程master分支的话,势必会有一些冲突的,因为在你在deb分支开发到开发完成,势必会有人已经对master分支做了修改!
- 所以这个时候我们一般都是先切换到本地的master分支,完了将远程master分支最新版本代码pull到本地,这个时候本地的master分支就是最新的了!
- 之后我们将本地的dev分支合并到本地的master分支,即先切换到master分支,之后执行git merge dev,将dev分支合并到master分支,这个时候如果产生了冲突,我们可以直接借助IDE进行冲突的解决!
- 冲突解决完成之后,再进行合并,此时我们的dev分支就是最新的master分支外加我们编写的新项目代码或者bug解决代码,这个时候再将本地的dev分支push到远程的dev分支!
- 之后我们在GITHUB上再将远程的dev分支合并到master分支,如果你没有直接合并的权限,这个时候我们就是只能发送一个合并请求,合并请求上指定执行合并的人。这个执行合并的人一般也会进行代码的review,检查你编写的代码无误后,才会进行合并,合并之后,你本次新功能的开发就算完毕了!
下图描述的只是在一个分支上的操作,是缺少dev分支到master分支合并操作的!