git 关于分支的操作

版权声明:转载请申明出处,谢谢 https://blog.csdn.net/qq_35495763/article/details/85465810
问题一:什么是分支,如何理解分支
背景:如何理解方才知道如何操作分支的操作
在其他人的博客中都有图: 将其他分支上工作好的提交(这里的HEAD,master 都在提交状态后的,跟暂存区没干系)这里的分支在提交后形成的git add 不会对分支有影响。
图一 在这里插入图片描述
问题二:如何创建一个分支,并且切换到该分支工作
关键字:创建分支,切换分支
从当前的位置创建一个分支:git branch dev
然后在切换分支:git checkout dev
然后使用git branch 查看分支
在这里插入图片描述
问题三:
如何合并分支
git merge命令用于合并指定分支到当前分支。
将其他分支工作文件合到当前分支中。
这里请参考:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000 廖雪峰的网站git 分支教程。
分支删除操作:git branch -d branchname(分支名);
问题四 :分支冲突问题如何解决
问题描述:
在分支的工作中,当两个分支修改了同一个文件,而后将分支进行合并,必然出现问题。
在这里插入图片描述
解决方法:解决冲突的文件即可

补充如何看冲突的内容

<<<<<<HEAD 是你当前所在分支的提交文件
这里的内容是你的提交
=======分割线
这里的内容是另一分支的提交
>>>>>>>>>feature

步骤一:两个分支的修改提交掉。然后,使用
命令:
git merge 另一分支名
进行合并,但是出现冲突
在这里插入图片描述
如何解决:
步骤二:在出现以上冲突后,打开冲突文件, 打开进行修改

在这里插入图片描述
步骤三:修改好,保存文件。再次提交掉就可以
在这里插入图片描述
在这里插入图片描述
经过以上操作,文件就和完成了,此时可以删掉另外一分支了。

补充有一点:有时候,提交的合并使用fast forward 的模式
效果是
如下图的两个效果
在这里插入图片描述
这是使用Fast Forward 的模式合并形成效果,他只是将master的指针调到dev的位置了。
这个例子:开发一直在master分支进行,但忽然有一个新的想法,于是新建了一个develop的分支,并在其上进行一系列提交,完成时,回到 master分支,此时,master分支在创建develop分支之后并未产生任何新的commit。这样才会产生fast forward模式
以上讲了这么多:启用和禁用ff 模式的区别到底是什么
上图就都知道了:
使用git merge --no-ff -m “” 分支
在这里插入图片描述
很明显:可以有添加了commit 点,有保留了分支记录
使用fast forward的模式
在这里插入图片描述
很明显:没有分支的记录,好像就是在master分支上修改(实际在dev 分支修改然后merge 到master但是没有展示出来这就是区别点)

哭:看人家的描述,还是没有图的展示效果明显。

问题五:
执行了git merge 分支的状况如何?
解决:在分支合并了后,当前分支肯定是将来两个分支合并的内容,但是用来来合并的分支,并没有变动的这里的用来合并的分支依然存在。
在这里插入图片描述
问题六
如何将当前的分支工作保存下来,然后切换到另一份分支进行工作,而后在恢复。
关键字:保存当前工作区,文件可以add 但是不能被提交
问题的前因后果,一半人是不懂的
第一:在我们切换分支操作的时候,必许将当前分支进行提交,否则不能进行切换。
在这里插入图片描述
这里指明了,切换分支前要将本地文件给提交掉。
但是,许多情况下,当前工作没有做完(不能提交,提交会有记录,别人以为你做完了,这是同步到远端服务器的),有必须切换分支。
这是使用 stash空间 将当前工作空间存起来,等下次分支切换完成后再弹出来。
操作:
保存当前工作区:
git stash
弹出当前工作区:git stash pop
在这里插入图片描述
这里也可以使用两步,弹出当前工作区,但是不删除stash空间中的内容。
使用git stash list 查看stash 中工作区列表。
使用:git stash drop/apply stash@{0} 删除/恢复制定stash到工作区。
练习使用:git stash
问题一:当前分支中若有 多个stash ,在弹出一个stash之前必须将工作clear.
即:当前工作区中如果有工作必须提交掉,或者 stash 起来。
在这里插入图片描述
补充点
问题七如何删除一个没有merge 过的分支
背景:如何删除一个有了操作的分支(分支没有操作当然可以直接删除),没有merge
用git branch -D 分支名 ----大D强行删除
补充:在删除时,在当前分支不可以删除当前你所在位置的分支(你自己在当前分支中),必须执行(chekout 分支),才能删除。如果不能checkout 分支,请使用stash后,然后使用(checkout 分支)。
问题八:如何查看远程库的信息
解决方法:git remote
(Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。)
git remote -v 显示更多信息
在这里插入图片描述
问题九:如何查看分支的合并操作图示?
问题分析,使用图形化更清晰表示分支合并操作情况
关键字:当前的分支的操作历史,分支合并图示。
git log --graph
在这里插入图片描述
不使用:git log
在这里插入图片描述

结论:不使用 --graph 总体上没有区别,但是用图形形象的看出分支(哪里岔开,哪里合并)操作。

进阶补充阶段

问题一:如何删除远端库中的分支呢?

步骤一:查看所有分支
git branch -a
步骤二:删除远端分支
git push origin --delete 分支名
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35495763/article/details/85465810