您的位置:首页 > 其它

git学习--分支管理

2018-02-11 19:40 225 查看
严格的来说HEAD不是指向提交,而是指向master,master才是指向分支的,所以HEAD指向的就是当前的分支。每当我们commit一次的时候提交就会向前走一步,git把这些提交串成一条时间线,这个时间线就是一个分支。

分支的作用:举个例子,假如当前有一个文件readme.txt,我们新创建了一个分支dev,然后切换到这个分支工作对readme.txt进行修改,然后提交,这个提交是提交到了dev分支,master分支还在原地没有动,此时我们在切换回master分支发现readme.txt文件还是修改前的内容,这个时候只需要将master分支和dev分支合并就可以了,然后删除dev分支。这样看来是不是方便了我们的工作。



1.下面开始练习

1.创建并切换到当前分支

git checkour -b dev//创建了dev分支并且切换到当前分支,即现在dev为主分支,我们可以用git branch查看



然后对文件进行修改并上传可以看到我们上传到了dev



现在切换回master分支,查看当前文件内容,发现没有变,然后合并dev分支和master

git checkout master    git merge dev//把当前分支合并到dev分支,使用的是快速合并,即直接把master指向dev的提交,这样主分支和更新齐头并进了,这个时候可以删除dev分支了  git branch -d dev





小结:

git branch//查看分支

   gti branch -d dev //删除分支

git checkout master //切换分支

 git checkout-b dev //创建并切换分支

 gti merge dev//快速合并分支

2.解决冲突

问题描述:创建新的分支feature,然修改readme.txt,提交,然后切换回master继续修改提交,这个时候分支就如下图



这种情况无法使用快速合并,如果使用会产生冲突,因为两个文件存在冲突,我们可以试试看



然后我们查看readme.txt的内容



此时我们在对文件进行修改将上述两个地方合并起来,在提交,此时分支变成了如下如



用参数 git log --graph --pretty=oneline --abbrev-commit可以看分支合并的情况



最后删除分支feature就可以了

3.分支管理策略

在一般情况下,合并分支的时候,如果可能,git会用快速合并的方法,但是这种模式,删除分支以后会丢失掉分支的信息,所以我们应该强制禁用快速合并,使用-no-ff参数合并,但是这种合并会新生成一个commit,这样就可以从分支看出分支信息了





因为会新创建commit所以我们加上-m.

分支策略:在实际的开发中,我们应该按照几个基本的原则进行分支管理:

首先master分支应该是非常稳定的分支,也就是用来发布新版本的,并不干活。在哪干活呢?干活都在dev上面,也就是说dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev合并到master身上,在master分支上发布1.0版本

4.BUG分支

假如我当前正在dev分支干活已经添加但是没有提交,但是此时需要我修改另外一个文件的bug,但是我此时文件还没有弄完,这个时候我们可以把此时的工作现场保护起来git stash,然后去创建bug修复好以后和master合并然后删除bug分支,修复好以后再回来恢复现场就可以了git stash pop。

注意开发新功能最好新建一个分支合理利用分支

5.推送分支:

就是把该分支上的所有本地提交推送到远程库。推送时候要指定bending分支,这样git就会将其对应到远程的分支上。master和dev分支要与远程同步。剩下的自己看着办

6.抓取分支:

一般情况下clone的远程库只能看到master分支,需要创建远程库的dev分支到本地的话,需要git checkout -b dev origin/dev命令

1.如果你git push origin dev失败了,说明你小伙伴的最新提交和你的最新提交有冲突,需要先git pull把最新的提交从origin/dev上面抓取下来 ,在本地合并然后在推送。

假如git pull失败的话就说明没有指定本地的dev分支与远程的dev分支连接。所以使用命令git branch --set -upstream dev origin/dev,然后在git pull
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: