分支常用命令
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
什么是分支?正常工作流程是什么?
从仓库建立起来之后就有主分支,叫做master。然后你可以在这个分支基础上建很多分支,每个分支都是独立的(重点),你作为仓库的管理者,也就是代码管理者,不想代码乱,也不想每位同事瞎改代码,也不希望工作白做,被别人覆盖掉,所以就要使用git来管理了,首先常规思路就是主分支保存着线上的代码,新建一个dev分支作为开发完成版分支,然后每个开发人员一个分支
现在分为A,B,C,D四个人开发为例,讲一个流程。A刚来要开始工作了,首先远端的库分支已经建好了,已经和远端库建立连接了,也到本地了,第一次拉取本地库只有master,自己新建分支(跟远端的库起一样的名字)
创建分支:git branch
切换自己的分支:git checkout
建立本地分支和远程分支的关联: git branch --set-upstream branch-name origin/branch-name;
上边这三个可以写成一个,创建一个和远程分支对应的分支并切换到这个分支
git checkout -b branch-name origin/branch-name
然后开始编写叫做head.js的某些逻辑部分。然后写完,然后加入缓存区,然后提交,然后merge合并到dev分支上,然后提交远程库。这就是完美的正常流程了,当然,要是这么顺利还用git 干啥。。问题就出在A在编辑这个文件,B也在编辑这个文件,B手快,提交了,也push了,A就要多处理点事情咯,当A在这种情况下还要提交的话,就会报错,不允许提交,这个时候就要先从远程库拉取下来。
git pull
然后文件里就是这个样子
<<<<<<< B的代码
console.log(a) //B已经提交完了
=======
alert(a) //你要提交的
>>>>>>>A
这就是冲突了,这个时候就该删除 <<<<<<< B的代码,=======,>>>>>>>A
然后走常规流程提交 git push*
git上面常用分支
Master
顾名思义,既然名字叫Master,那么该分支就是主分支的意思。在git repo下主分支的职责主要就是负责记录stable版本的迭代,当在beta版本的项目或是开发版本的项目得到了充分的验证之后,我才能将分支并入master分支。master分支永远是production-ready的状态,即稳定可产品化发布的状态。
Develop
这个分支就是我们平常开发的一个主要分支了,不管是要做新的feature还是需要做bug fix,都是从这个分支分出来做。在这个分支下主要负责记录开发状态下相对稳定的版本,即完成了某个feature或者修复了某个bug后的开发稳定版本。
Feature branches
这是由许多分别负责不同feature开发的分支组成的一个分支系列。new feature主要就在这个分支系列下进行开发。当我在一个大的develop的迭代之下,往往我们会把每一个迭代分成很多个功能点,并将功能点分派给不同人的人员去开发。每一个人员开发的功能点就会形成一个feature分支,当功能点开发测试完毕之后,就会合并到develop分支去。
总的来说:
-
Master分支是受保护的分支,应该禁止开发人员像master往上面提交代码以及合并(marged)代码.
-
Develop分支也是受保护的分支,禁止开发人员像develop上面提交代码,但是可以让其他分支代码合并(marged)代码。
-
Feature branches分支是开发人员随意创建的分支,权限比较大,随意删除,marged到其他分支都没问题。