大家好,欢迎来到IT知识分享网。
一:学习内容
- git分支特性
- git分支操作-查看分支
- git分支操作-创建分支
- git分支操作-切换和修改分支
- git分支操作-分支合并
- git分支操作-代码合并冲突解决
二:git分支特性
1.什么是分支?
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。
使用分支,程序员就可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。
可以简单理解为分支即为副本,一个分支就是一个单独的副本(分支的底层其实也是指针的引用)。
master、hot-fix等分支其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的,所以创建分支的本质就是多创建一个指针。【head如何指向master,那么我们现在就在master分支上,head如果指向hot-fix,那么我们现在就在hot-fix分支上。】所以切换分支的本质就是移动HEAD指针。
2.分支的好处
可以同时推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
三:git分支操作
1.命令汇总
1 git branch 分支名:创建分支 2 git branch -v:查看分支 3 git checkout 分支名:切换分支 4 git merge 分支名:把指定的分支合并到当前分支上
2.查看分支
1 #查看分支 2 git branch -v
命令执行结果如下:
3.创建分支
1 #创建一个分支,名为hot-fix,它会自动拷贝master分支指针当前指向的版本的内容 2 git branch hot-fix 3 4 #再次查看分支,此时发现有2个分支了 5 git branch -v
命令执行结果如下:
4.切换和修改分支
1 #当前在master分支上,修改hot-fix分支内容,则需要切换分支 2 git checkout hot-fix 3 4 #再次查看分支,此时发现*号指向了hot-fix,说明分支已经切换到hot-fix分支上了 5 git branch -v 6 7 #修改hot-fix分支上的内容 8 vim hello.txt 9 git status 10 git add hello.txt 11 git commit -m "hot-fix first commit" hello.txt 12 13 #在hot-fix分支上查看版本精简信息 14 git reflog
命令执行结果如下:
从master分支切换到hot-fix分支:
修改hot-fix分支上的内容并提交本地库:
查看hot-fix分支上版本精简信息:下方截图从最后一行往上读便是版本经历过程
①8b94833 HEAD@{7}: commit (initial): first commit:在master分支上,第一次提交,版本号为8b94833
②dbb4e24 HEAD@{6}: commit: second commit:在master分支上,第二次提交,版本号为dbb4e24
③f5ad1d9 (master) HEAD@{5}: commit: third commit:在master分支上,第三次提交,版本号为f5ad1d9
④dbb4e24 HEAD@{4}: reset: moving to dbb4e24:在master分支上,从第三次版本穿梭到第二次版本
⑤8b94833 HEAD@{3}: reset: moving to 8b94833:在master分支上,从第二次版本穿梭到第一次版本
⑥f5ad1d9 (master) HEAD@{2}: reset: moving to f5ad1d9:在master分支上,从第一次版本穿梭到第三次版本
⑦f5ad1d9 (master) HEAD@{1}: checkout: moving from master to hot-fix:从master分支切换到hot-fix分支
⑧d33c235 (HEAD -> hot-fix) HEAD@{0}: commit: hot-fix first commit:在hot-fix分支上,第一次提交,版本号为d33c235
5.合并分支-正常合并
1 #将hot-fix分支上的当前指针指向的版本,合并到master分支上 2 #首先需要切换到master分支上 3 git checkout master 4 5 #然后合并分支 6 git merge hot-fix
命令执行结果如下
从hot-fix分支切换到master分支上:
合并分支:
👉说明:已知:
master分支:
8b94833:first commit
dbb4e24:second commit
f5ad1d9:third commit
hot-fix分支:
d33c235:hot-fix first commit
aacf318:hot-fix second commit
test分支:
51c56ed:test分支第1次提交
4e37885:test分支第2次提交
注意:这里合并并不是合并该分支的最新版本,而是该分支当前指针指向哪个版本就合并哪个版本。
如:test分支当前指针指向版本为第一次提交的51c56ed,然后切换到master分支,合并test分支,则会将test分支的第一次提交的51c56ed版本覆盖掉master分支指针指向的当前版本内容。
6.合并分支-产生冲突
>产生冲突的原因:合并分支时,两个分支在同一个文件的相同区域(行、段落)有两套完全不同的修改。git无法决定使用哪一个,必须人为决定新代码内容。
>注意:这里的修改是指已经存在子分支了,在对master和子分支分别修改
1 #已存在master和hot-fix两个分支 2 #先对master分支进行修改,对hello.txt最后一行加上master gai,然后add,最后commit 3 git checkout master 4 vim hello.txt 5 git add hello.txt 6 git commit -m "master gai" hello.txt 7 8 9 #再对hot-fix分支进行修改,对hello.txt最后一行加上hot-fix gai,然后add,最后commit 10 git checkout hot-fix 11 vim hello.txt 12 git add hello.txt 13 git commit -m "hot-fix gai" hello.txt 14 15 16 #切回master,将hot-fix合并到master上,会出现合并冲突 17 git merge hot-fix
命令执行结果如下:
7.合并分支-解决冲突
1 #直接在master分支上,手动修改冲突,删除特殊字符和不想要的代码,留下你想要的代码 2 vim hello.txt 3 4 #修改后的文件,需要添加暂存区并提交本地库 5 git add hello.txt 6 7 #提交本地库,注意这里不要加hello.txt了,提交成功后只会修改合并后的分支也就是master分支的内容,不会修改hot-fix分支的内容 8 git commit -m "merge test"
命令执行结果:
手动修改冲突:删除特殊字符和不想要的代码,留下你想要的代码
修改文件添加暂存区并提交本地库:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30745.html