在实际开发中,一般企业中开发一个项目的分支策略:
主分支(master)
Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。
代码库应该有一个、且仅有一个主分支。
master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活。
开发分支(develop)
主分支只用来分布重大版本,日常开发都是在这个分支上完成。
到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本。
功能分支(feature)
它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop。
每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
预发布分支(release)
预发布分支,它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。预发布分支是从Develop分支上面 分出来的,预发布结束以后,必须合并进Develop和Master分支。
bug分支(fix bug)
软件正式发布以后,难免会出现bug。有了bug就需要修复,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
如果当前分支的工作还未完成,bug又急于修改,那该怎么办呢?
- 创建文件‘bug.txt’,并提交
创建新分支
1
2$ git checkout -b develop
Switched to a new branch 'develop'修改文件,并查看状态
1
2
3
4
5
6
7
8
9$ git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: bug.txt
no changes added to commit (use "git add" and/or "git commit -a")此时需要修改一个紧急的bug。我们可以利用stash功能,把当前工作现场“储藏”起来,修改完bug后再恢复现场后继续工作。
保存现场
1
2
3$ git stash
Saved working directory and index state WIP on develop: 3978a2e add bug.txt
HEAD is now at 3978a2e add bug.txt再查看工作区状态
1
2
3$ git status
On branch develop
nothing to commit, working directory clean工作区是干净的,就可以创建bug分支进行修改bug。
- 修改bug完成后,切换到之前的‘develop’分支
查看保存现场
1
2$ git stash list
stash@{0}: WIP on develop: 3978a2e add bug.txt恢复现场
1
2
3
4
5
6
7
8
9
10$ git stash pop
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: bug.txt
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (ea54fb954976da63842dcdd7faab12092ae71130)
Notes:
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
1
$ git stash apply stash@{0}
用git stash apply恢复后,stash内容并不删除,你需要用git stash drop来删除;
其它分支
在Git中,由于分支是如此的强大,所以大家可以根据需要创建即可。