徐州网站app开发做网店去哪个网站货源好
1. 什么是分支?
master分支
我们在初始化git仓库的时候,会默认创建一个master分支,HEAD指针这时就会默认执行master分支。当我们在master分支提交(commit)了更新之后,master分支就会指向当前当前最新的commit。看下图比较好理解:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SR76gqQN-1676116725836)(../picture/image-20221203233059324.png)]](https://img-blog.csdnimg.cn/11cefaf0a474498a9443143a33e47b26.png)
创建新的分支后HEAD指针移动情况
但是随着时间的推移,我们可能会一个版本在原来的基础上改动很大,或者说其他同事在主分支上创建自己的分支进行独立开发,然后开发验证完毕之后再合并到master分支。
比如我们在master分支创建debug分支,刚创建时debug分支会指向master分支相同的commit提交的位置,并且git会更改HEAD指针指向新的分支debug。如下图:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jYti5UAM-1676116725837)(../picture/image-20230211160937422.png)]](https://img-blog.csdnimg.cn/bca04968714249c3a8c0da95cfccfc31.png)
这里创建一个新分支,其实就是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了。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hpv9HgPU-1676116725838)(../picture/image-20230211162203020.png)]](https://img-blog.csdnimg.cn/f1ac315859724114bbc8f77c2298bd53.png)
合并完之后,如果不需要debug分支了,我们可以删除debug分支。
2. 为什么需要分支?
分支其实就是为了更方便的对一个项目进行版本控制。上面我们也提到,多个人进行协同开发,每个人可以创建自己的独立分支,等到测试验证OK了,那么就可以合并到主分支,这样在开发过程中不会影响到master分支。
- 可以多人在各自分支进行独立开发
- 各个分支互相独立,互不影响,各自的分支开发完成就可以合并到主分支
3. 分支的具体操作
3.1 查看分支
git branch # 查看当前分支
git branch -v # 查看当前分支,并列出最近一次提交
git branch -a # 查看本地的所有分支
git branch -r # 查看远程分支
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WZKSyOJ7-1676116725838)(../picture/image-20230211170625945.png)]](https://img-blog.csdnimg.cn/ce3a3cff1e6e40269505d40a3e6f099b.png)
3.2 新建分支
git branch <分支名称>
git checkout -b <分支名称> # 创建并切换到该分支,相当于两条命令

3.3 切换分支
git checkout <分支名>
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRJqvQC1-1676116725839)(../picture/image-20230211173006520.png)]](https://img-blog.csdnimg.cn/8fad25b3f297467a8c0fde8c0af6301a.png)
记录:我在工作的电脑上试过切换分支,如果在当前已经有的修改还没有commit的话,那么git是不让切换的,切换失败。但是在我自己的笔记本使用,又可以正常切换。不知道怎么回事,这里记录下,后面慢慢了解。
当我们切换完分支之后,在这个分支上一样可以git add追踪文件、git commit提交到本地仓库等操作。
3.4 分支的合并
git merge 想要合并的分支名称
分支合并之前,需要先切换到想要合并的分支,然后再执行分支合并命令。
比如,我在debug分支做的修改,想合并到master分支。那么首先就要切换到master分支,然后再执行 git merge 合并命令。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xl0hFqnO-1676116725839)(../picture/image-20230211175802589.png)]](https://img-blog.csdnimg.cn/f1d8c65cc0e4497f99a225ce38f73c23.png)
下面,我们在debug分支做一些更改,并且提交更新到该分支。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LPFZKNKI-1676116725839)(../picture/image-20230211180910496.png)]](https://img-blog.csdnimg.cn/c6bc51d2835b452d87d5087e5de9f36a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7fYWidR-1676116725839)(../picture/image-20230211181005483.png)]](https://img-blog.csdnimg.cn/a21ff50525ea4f57be308c4970c31d28.png)
3.5 删除分支
git branch -d 分支名称
上面,我们已经吧debug分支合并到主分支了,如果觉得debug分支不再使用,那么我们可以删除该分支。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cZigWcuJ-1676116725840)(../picture/image-20230211181328227.png)]](https://img-blog.csdnimg.cn/68f9a0e8895f4bdf9c740ef907bfd153.png)
4. 分支合并产生的冲突问题解决
4.1 冲突如何产生
同一个文件的同一个地方的内容,被不同的分支修改了,并且提交了commit的。
比如我上面创建的debug分支修改了test.c文件的第8行,然后commit;然后再切换到master分支,master分支同样修改了tset.c文件的第8行,然后commit。这个时候,我们想要吧debug分支内容合并到master分支,那么就会产生冲突。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-od72Vt9S-1676116725840)(../picture/image-20230211185847584.png)]](https://img-blog.csdnimg.cn/54c35a0468d9433b9d261b63a3206382.png)
4.2 冲突解决
上面,我们执行 git merge debug 命令后会自动合并的,但是冲突的原因,进入了手动合并的模式,git 命令行也提示了MERGING字样。
手动合并的操作步骤:
1、执行 git status 命令,确认需要手动合并的文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AdjuInHE-1676116725840)(../picture/image-20230211190152890.png)]](https://img-blog.csdnimg.cn/f1ded910096a4bce85bcd2e626366061.png)
2、打开该文件,确认自己需要保留那些内容,删除哪些内容。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c0vyQ7qH-1676116725841)(../picture/image-20230211190455465.png)]](https://img-blog.csdnimg.cn/eef1e5cd4bc046ce94fa2cb12ae5e943.png)
3、删除保存之后,我们就可以提交到暂存区,然后commit到本地仓库了。commit到本地仓库之后,就会退出手动合并的模式。

