如何进行本地分支管理
分支是分步添加功能的方式,在不影响主线的同时继续工作,在分支完成后合并到主线,使得主线时刻处在可运行的模式。
#Git进行分支管理
显示分支一览表
git branch
显示分支
![在这里插入图片描述](https://img-blog.csdnimg.cn/bfb96c73c7b847738dd6ad6add9161c3.png)
可以看出现在我们只有一个主分支(master)
创建分支
git branch 分支名称1
在当前分支下创建分支
![在这里插入图片描述](https://img-blog.csdnimg.cn/0143a66cb37a4f14b71b0210dd8da873.png)
当前分支为master,在master下输入git branch A
,即在master分支下创建分支。
转到新创建的分支
git checkout 分支名称
转到该分支。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d6ad43fc489f4868be768293b16e3de9.png)
可以看到 当前分支从master
分支转到了A
分支。
注意: 当你使用git checkout A
时,A
分支内的内容会替代你的工作目录的内容(因为A
分支从master
中分支出,但还未作任何更改,因此在工作目录中并无变化)
创建分支并转到新创建的分支
一步解决前面两步的方式
git checkout -b B
新建B
分支并转到B
分支。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d93715e0b7544e47b88ba71cf4a4dbdb.png)
提示:对A
分支做更改不影响B
分支和master
分支的内容。
分支合并
当我们对B
分支做了修改(在B
分支的readme.md
文件中添加 “这是B分支” ),想将B
分支合并到A
分支上时。
-
将分支切换到被合并的分支(这里为A
,git checkout A
)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1a9385a32b2d4252a633d8c959dc216c.png)
切换回A
分支后,打开工作目录readme.md
文件,发现 “这是B分支” 不在其中,说明A
,B
分支是完全独立的两个文件。
-
使用$ git merge B
,将B
分支合并到A
分支。
![在这里插入图片描述](https://img-blog.csdnimg.cn/0a870520bb53427687a277e4493dc8ea.png)
再打开工作目录中的readme.md
文件,发现在文件中再次出现 “这是B分支” 的文字。说明分支合并成功。
注意点:
- 如若没有提交修改了的工作目录中的内容,直接改变当前分支,Git会提醒
M
,表示工作区中的内容未提交。
![在这里插入图片描述](https://img-blog.csdnimg.cn/728c9cbca634478fad68ce6f521432d9.png)
需要 git add -A
,git commit -m "提交信息"
完成提交。
删除分支
git branch -d (branchname)
删除branchname分支
现在我们有如下三个分支
![在这里插入图片描述](https://img-blog.csdnimg.cn/579782deaeb144fba41051924b528990.png)
使用删除分支命令删除B
分支。
![在这里插入图片描述](https://img-blog.csdnimg.cn/93d5bd772f4b4f2db322ee18e5fd0b12.png)
再次查看分支
![在这里插入图片描述](https://img-blog.csdnimg.cn/46fcba5c02ad4c6b9a5b42742664f67c.png)
发现B
分支被成功删除。
冲突合并
若我们将A
分支中readme
文件改为如下(记得提交)
![在这里插入图片描述](https://img-blog.csdnimg.cn/97431d79403346389f750d638746d82e.png)
将master
分支中readme
文件改为如下(记得提交)
![在这里插入图片描述](https://img-blog.csdnimg.cn/09ce3a13c4ee48fc91a847a8cea235a7.png)
现在我们有如下状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/dbb64ec1307c4bee939fb49ce4ca869c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_12,color_FFFFFF,t_70,g_se,x_16)
如若现在将A
分支合并到master
分支,使用git merge A
,则出现如下提示
![在这里插入图片描述](https://img-blog.csdnimg.cn/493d9cd085e343bbad77bf98df75edd3.png)
这时打开冲突文件,会发现变为如下格式
![在这里插入图片描述](https://img-blog.csdnimg.cn/abe67df2a38f4087b840d05e2aef1fa5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_13,color_FFFFFF,t_70,g_se,x_16)
将冲突文件修改为如下内容
![在这里插入图片描述](https://img-blog.csdnimg.cn/6474f0be444e44a3b0c0344f3d475a45.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_14,color_FFFFFF,t_70,g_se,x_16)
再提交到master分支。
![在这里插入图片描述](https://img-blog.csdnimg.cn/152ed942196746df980f3b9f568c8331.png)
可以看到提交后,由master|MERGING
分支变为master
分支,说明合并成功
注意:若出现如下提示,说明你在工作区的内容还未提交,请先提交再合并!
![在这里插入图片描述](https://img-blog.csdnimg.cn/439bffb6646d4814a9639114850f02b7.png)
最后删除A分支
git branch -d A
.
#Tortoise进行分支管理
显示分支
版本分支图(G)
可显示版本更新进程。
创建分支
创建分支(B)...
点击后如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/fd826b4a2e13412abc05e33d3fffcd32.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
创建C
分支,并切换到C
分支。
切换分支
切换/检出(W)
打开后如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/94c107da03254e9fbaf7fe5a83624545.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
可选择切换到的分支
分支合并
修改C
分支中readme
文件为如下并提交。
![在这里插入图片描述](https://img-blog.csdnimg.cn/612820a2930c4cb6bc2a89ca43bacfa7.png)
切换到master
分支,然后合并(M)
,打开如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a7e0eac2efa4400a9fb84dfe02c3510.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
选择合并的分支,点击确定。
![在这里插入图片描述](https://img-blog.csdnimg.cn/e35065b354cd4a18805c98b1d0e146a4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
删除分支。
冲突合并
同样,创建D
分支,对D
分支做修改,在对master
分支做修改,使两个分支产生冲突。
在master分支下合并(M)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e8928b1dbf764eb2941d62f8f24cd858.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
选择D
分支合并。
弹出如下提示框。
![在这里插入图片描述](https://img-blog.csdnimg.cn/52e3c6e12fff40dfb653b29918e40fdd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_15,color_FFFFFF,t_70,g_se,x_16)
打开冲突文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/deb3d5adf6bc45c895c450b9ebbe953e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_12,color_FFFFFF,t_70,g_se,x_16)
修改冲突位置,提交到master
分支。弹出下图:让你不要取消任何提交文件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/1554335cacaa4f8281f7097a7aa65904.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_15,color_FFFFFF,t_70,g_se,x_16)
直接提交弹出下图,让你修改日志信息,来确保你修改了冲突。
![在这里插入图片描述](https://img-blog.csdnimg.cn/46df4fac3cdd4ebc81e65a756105ff6f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_17,color_FFFFFF,t_70,g_se,x_16)
放弃提交后修改日志信息,再提交。
提交成功
#VS2019进行分支管理
显示分支
![在这里插入图片描述](https://img-blog.csdnimg.cn/d258d5d6cfec4929bc967e6e9799e51f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_11,color_FFFFFF,t_70,g_se,x_16)
创建分支
Git -》 新建本地分支位置(N)
。
切换分支
在管理分支(M)
中双击或在选定分支上点击enter
切换分支。
分支合并
在需要被合并的分支上右键,选择将“D”合并到“master”(M)
![在这里插入图片描述](https://img-blog.csdnimg.cn/12ea4c5f8f064a05b17beffe0b37966a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_9,color_FFFFFF,t_70,g_se,x_16)
冲突合并
若出现合并冲突,上方出现提示
![在这里插入图片描述](https://img-blog.csdnimg.cn/459155aaea0945ebad253bd128ed0605.png)
点击解决冲突
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a20885bc20c43d5b714e2828e96c51b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
在未合并的更改中点击main.cpp
,打开下方窗口
![在这里插入图片描述](https://img-blog.csdnimg.cn/892d237a4dde4a80ae97e220c23344a9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
或直接打开冲突文件修改。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f01e061b92aa42d9aaa14ae3bb1771f5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
最后点击上方接收合并
。
再进行提交
![在这里插入图片描述](https://img-blog.csdnimg.cn/9bfc8d0e3a3d42e8b2fef72d83631a66.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWxzYeeahOi_t-W8nw==,size_10,color_FFFFFF,t_70,g_se,x_16)
最后删除D
分支
补充
VS2019提交到GitHub中文乱码问题
因为网页的编码一般为 utf8 而VS2019中的编码为 中文(GB2312)。
如何修改VS2019编码
参考资料
廖雪峰的官方网站
Git 菜鸟教程