一、提出问题
今天开发的过程中遇到一个问题,A组接到开发任务要修改file文件,B组在此之前的15天为了完成自己的开发任务对file文件进行了修改,为了同步代码,B组将自己未完成的模块file文件提交到了cvs上。A对此一无所知,A组在完成开发任务后,把file文件完全上到了现网环境,报错了。
当然,避免上述问题的途径很多,有想法的朋友可以帮忙提议解决下。但是在使用git的时候,我就突然想到,如果每个团队是在主分支上迁出一个分支工作,直到自己的工作完成之后,再把代码提交到主分支上,那么别人上文件的时候从主分支上迁出的文件上现网环境也不会出上述的问题了。所以,学会建分支,在分支上开发代码,也很实用。
二、git分支
git把每次提交串成一条时间线,这条时间线就是一个分支。
如前面几个讲解里所讲到的:首次提交是一个master主分支。head不是指向提交,而是指向master,master才指向提交,故head指向的就是“当前分支”。创你建一个list分支,此时,就是一个创建了一个叫list的指针,指向了master相同的commit。而你的head指向了list,其他人的head依然指向master。
同理,如果你想删除list分支,其实没有删掉list分支提交的东西,只是删除了list的指针。
1.创建list分支
git checkout -b list 其中-b表示:创建并切换
git branch会列出所有分支,当前分支有一个*号
3.提交内容到当前的分支
git add git commit
4.list分支的工作完成后,切换回master分支
git checkout master
5.把list分支的工作成果合并到master分支上
git merge list git merge命令用于合并指定分支到当前分支
6.删除list分支
git branch -d list
三、解决冲突
1.在master上创建分支
git branche -b list
2.在该分支上编辑readme.txt文件
git merge list
5.解决冲突
冲突会包留在文件中,两个部分被===========================分割开。需要人工方式修改整合文件。
6.删除分支
git branch -d list
7.查看分支合并的路径
git log --graph --pretty=oneline --abbrev-commit
四、bug分支
假设,你在list分支上工作。此时master上出现了bug需要修复,那么你必须切换到master分支并修复该bug。
git stash
可以用git status查看当前工作区是否干净
git stash pop
五、总结