为什么需要为版本库CVS、Git创建branch:
分支在团队中的作用:
如一个项目现在是1.0版,团队同时进行1.1版和2.0版的开发,代码分歧大。
需要用到分支来操作,不同的任务组在不同的分支上开发,互相之间不会影响。
项目中添加一个新功能,一般不会直接在主分支上修改,需新建一个分支,在上面更改代码。
要保证主线代码的完整性和可用性。
分支在GIT上的特点:
一般项目的master分支是稳定版本,可以直接发布或者被项目之外的人使用。
新特性和BUG修改都在不同的分支上进行开发和测试。
GIT分支的另外一个重要特性就是可以合并不同软件仓库(fork)的分支。
实例:
开发团队有一个主软件仓库,开发者可以fork这个仓库,
相当于克隆了一个私有的软件仓库,
可以向主软件仓库提交merge request,
这样新开发的特性就会被合并到主软件仓库的某个分支中。这种特性极大地推动了开源项目,
自从GIT出现后,每个人都可能成为开源项目的贡献者,
就是基于这种特性(请参照Github的pull request,和merge request是同一个东西)
GITEE:
Branch protection is to prevent members push code to important branch
(such as master branch)
1.Normal branches: project members
(developers privilege and above) may push(开发人员特权及其它授权人员,可以push)
1.Protect branches: project administrator may push(项目管理员可以push)
1.Read-only branches: anyone can not push(只读权限)
列出本地已经存在的分支,并且在当前分支的前面加“*”号标记
shenhl:cmp user$ git branch
* dev
master
列出远程分支
shenhl:cmp user$ git branch -r
origin/HEAD -> origin/dev
origin/dev
origin/master
列出本地分支和远程分支
shenhl:cmp user$ git branch -a
* dev
master
remotes/origin/HEAD -> origin/dev
remotes/origin/dev
remotes/origin/master
git branch test, 创建本地分支test,然后通过git branch -a 查看分支小情况
shenhl:cmp user$ git branch test
shenhl:cmp user$ git branch -a
* dev
master
test
remotes/origin/HEAD -> origin/dev
remotes/origin/dev
remotes/origin/master
删除本地分支
shenhl:cmp user$ git branch -d test
Deleted branch test (was 2233ab4).
删除远程分支
shenhl:cmp user$ git branch -d -r branchname
error: remote-tracking branch 'branchname' not found.
切换分支:
shenhl:cmp user$ git checkout dev
Already on 'dev'
Your branch is up to date with 'origin/dev'.
一个完整的流程演示:
dev 分支上修改内容后===到==合并到master分支上。
1.checkout 到dev分支
shenhl:cmp user$ git checkout dev
Already on 'dev'
Your branch is up to date with 'origin/dev'.
2.在dev分支节点上,修改代码或者创建内容
3.将修改的内容,提交到dev分支上
shenhl:cmp user$ git commit -a -m 'readme add new thing'
[dev b47059f] readme add new thing
1 file changed, 1 insertion(+)
4.将修改的内容,push到dev分支上
shenhl:cmp user$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 309 bytes | 309.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Powered by Gitee.com
To https://gitee.com/null_454_5218/cmp.git
2233ab4..b47059f dev -> dev
5.切换回master分支上,把dev分支上的内容合并到master上
注意:如果master分支上和dev分支上的修改的文件有冲突,要先解决冲突,再合并。
shenhl:cmp user$ git merge dev
Auto-merging README.md
Merge made by the 'recursive' strategy.
README.md | 1 +
1 file changed, 1 insertion(+)