版权声明:转载请申明出处,谢谢 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 分支名