说明:在开发中,为了保持master主分支代码的稳定性,往往会创建其他如分支,在分支上去编写或修改新的代码,完成后再通过分支合并的方式,将代码合并到master主分支上,接下来就让我们一起来了解怎样来创建合并分支吧
话不多说,直接上图(代码)
创建分支、合并分支
1.查看当前分支:git branch
*为当前所在的分支(版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支)
2.创建分支: git branch dev
3.切换分支: git checkout dev(也可以使用 git checkout -b dev 创建并切换分支一步到位)
4.在分支上修改readme.txt内容,增加内容cccccccc,添加并提交到仓库中
5.现在dev分支上的工作已完成,现在切换到主分支mater上,继续查看readme.txt文件
6.使用git merge dev将dev分支上的内容合并到主分支上
7.合并完之后,删除dev分支,git branch -d dev
再次查看当前分支,发现已经没有dev分支了
总结创建与合并分支命令如下:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
如何解决冲突:
第一步:创建分支dev,并在readme.txt上添加内容“dddddddddddd”
第二步:切换到主分支,然后在readme.txt上面添加内容”eeeeeeeeeeee“
第三步:合并分支:git merge dev ,则会产生冲突
第四步:查看当前库的状态
第五步:查看当前readme.txt的内容,<<<<<<< HEAD 和 ========之间的内容,是主分支master添加的内容,
======== 和 >>>>>>>>>> dev之间的内容是分支dev添加的内容
第六步:手动删除多余的内容,修改readme.txt内容如下,然后重新提交
第七步:删除分支 git branch -d dev
第八步:git log --graph --pretty=oneline --abbrev-commit 查看日志详细信息
bug分支
1.在开发工作中,经常会遇到bug,可以通过创建临时分支修复,修复完成后,合并分支,然后将临时分支删除掉
2.比如我们接到一个404bug,我们可以创建一个404分支修复它,当前的dev分支上的工作还没有提交。
3.并不是不想提交,而是dev分支要两天完成,issue-404分支要5个小时完成。所以我们可以暂时把当前工作现场“隐藏起来”:git stash,等修复bug后,恢复现场继续工作。如下:
4.现在我们可以创建issue-404分支来修复bug了:
5.修改代码如下
6.修改完成后,切换到master分支上,合并分支,并删除issue-404分支。演示如下:
7.现在我们回到dev上干活了
8.工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:
1.git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2.另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
方法一:
方法二:
抓取分支
多人协作时,大家都会往master分支上推送各自的修改。现在我们可以模拟另外一个同事,可以在另一台电脑上(注意要把SSH key添加到github上)或者同一台电脑上另外一个目录克隆,新建一个目录名字叫code2
第一步:但是我首先要把dev分支也要推送到远程去,如下
第二步:创建code2目录,并将远程库克隆到本地来(同事目录)
现生成目录如下:(同事目录)
第三步:现在我们的小伙伴要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,于是可以使用命令创建本地dev分支:git checkout –b dev origin/dev(同事目录,同事修改了文件,并推送到远程)
第四步:小伙伴们已经向origin/dev分支上推送了提交,而我在我的目录文件下也对同样的文件同个地方作了修改,也试图推送到远程库时,如下:
由上面可知:推送失败,因为我的小伙伴最新提交的和我试图推送的有冲突,解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送
第五步:git pull
第六步:git branch --set-upstream-to origin/dev,指定远程分支链接
第七步:再次git pull
第八步:手动修改readme.txt冲突部分
第九步:提交,并commit,然后再次推送到远程库中