昆明网站建设手机版,阿里企业邮箱注册申请免费,网站建设指南 读书心得,装修设计网站源码1. 什么是分支#xff1f;
master分支
我们在初始化git仓库的时候#xff0c;会默认创建一个master分支#xff0c;HEAD指针这时就会默认执行master分支。当我们在master分支提交#xff08;commit#xff09;了更新之后#xff0c;master分支就会指向当前当前最新的co…1. 什么是分支
master分支
我们在初始化git仓库的时候会默认创建一个master分支HEAD指针这时就会默认执行master分支。当我们在master分支提交commit了更新之后master分支就会指向当前当前最新的commit。看下图比较好理解 创建新的分支后HEAD指针移动情况
但是随着时间的推移我们可能会一个版本在原来的基础上改动很大或者说其他同事在主分支上创建自己的分支进行独立开发然后开发验证完毕之后再合并到master分支。
比如我们在master分支创建debug分支刚创建时debug分支会指向master分支相同的commit提交的位置并且git会更改HEAD指针指向新的分支debug。如下图 这里创建一个新分支其实就是HEAD指针指向了新的分支工作区的内容并没有改变。
这时我们就会在debug分支上面进行开发工作commit到debug分支了。比如我们在debug分支上提交了两次commit那么debug分支会往前移动两次但是master分支是不变的。如下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c0YMUBQy-1676116725837)(…/picture/image-20230211161559195.png)]
debug分支与master分支合并
上面我们创建了debug分支如果我们做完了debug分支的工作想合并到master分支怎么合并。通过上图我们可以知道简单的方法就是把master分支也指向debug分支的commit即可这样master分支和debug分支就又指向了同一个最新的commit了。 合并完之后如果不需要debug分支了我们可以删除debug分支。
2. 为什么需要分支
分支其实就是为了更方便的对一个项目进行版本控制。上面我们也提到多个人进行协同开发每个人可以创建自己的独立分支等到测试验证OK了那么就可以合并到主分支这样在开发过程中不会影响到master分支。
可以多人在各自分支进行独立开发各个分支互相独立互不影响各自的分支开发完成就可以合并到主分支
3. 分支的具体操作
3.1 查看分支
git branch # 查看当前分支
git branch -v # 查看当前分支并列出最近一次提交
git branch -a # 查看本地的所有分支
git branch -r # 查看远程分支3.2 新建分支
git branch 分支名称
git checkout -b 分支名称 # 创建并切换到该分支相当于两条命令3.3 切换分支
git checkout 分支名记录我在工作的电脑上试过切换分支如果在当前已经有的修改还没有commit的话那么git是不让切换的切换失败。但是在我自己的笔记本使用又可以正常切换。不知道怎么回事这里记录下后面慢慢了解。
当我们切换完分支之后在这个分支上一样可以git add追踪文件、git commit提交到本地仓库等操作。
3.4 分支的合并
git merge 想要合并的分支名称分支合并之前需要先切换到想要合并的分支然后再执行分支合并命令。
比如我在debug分支做的修改想合并到master分支。那么首先就要切换到master分支然后再执行 git merge 合并命令。 下面我们在debug分支做一些更改并且提交更新到该分支。 3.5 删除分支
git branch -d 分支名称上面我们已经吧debug分支合并到主分支了如果觉得debug分支不再使用那么我们可以删除该分支。 4. 分支合并产生的冲突问题解决
4.1 冲突如何产生
同一个文件的同一个地方的内容被不同的分支修改了并且提交了commit的。
比如我上面创建的debug分支修改了test.c文件的第8行然后commit然后再切换到master分支master分支同样修改了tset.c文件的第8行然后commit。这个时候我们想要吧debug分支内容合并到master分支那么就会产生冲突。 4.2 冲突解决
上面我们执行 git merge debug 命令后会自动合并的但是冲突的原因进入了手动合并的模式git 命令行也提示了MERGING字样。
手动合并的操作步骤
1、执行 git status 命令确认需要手动合并的文件 2、打开该文件确认自己需要保留那些内容删除哪些内容。 3、删除保存之后我们就可以提交到暂存区然后commit到本地仓库了。commit到本地仓库之后就会退出手动合并的模式。