前两篇讲解了基础部分和回退部分,这一篇该说一下分支这个部分了。
所谓分支,就是不想所有的任务都在主分支上进行,从而先创建一个其他的分支,等大部分功能都完善好了再整理到主分支上,这样来避免出错和复杂的提交记录。
1.git branch
这条指令的意思是,查看分支。
可以看到现在只有一个分支master,也就是我们的主分支,只要进行了git初始化,那么就一定会有一个主分支,前两篇的操作也都是在这个master上进行的,也可以看到master前面有一个*,代表的就是当前分支为master。
2.git branch 分支名称
可以猜的出来,这条指令的意思就是创建一个分支。
我们来用一下这个指令。然后再用上个指令查看一下分支。
可以看到,我们master的分支上面显示了一个dev分支,但是*还在master前面,说明主分支还是master。
现在我们打印一下提交记录。
请记住,现在的提交记录是master上的。
3.git switch 分支名称
这条指令的意思是切换分支(在2.23版本中替换了checked out)
我们来用一下这个指令切换到dev分支,然后在查看一下分支状态。
可以看到,我们的dev分支现在前面有了个*,也就是说,我们dev分支在使用这个命令后现在变成了主分支。
现在我们在打印一下提交记录。
似乎和刚才master分支上的一样,通过这一点我们可以知道,我们在创建分支的时候,会复制一下主分支,但之后的操作,二者不同步。
4.git merge 指定分支
这条指令的意思是合并分支,在演示这个命令之前,我先做一些操作。
现在我们的主分支是dev分支,现在我给a.txt进行2次add和 commit操作。
然后我们log一下提交记录。
可以看到我们这两次提交已经有记录了,现在我们切换到master分支上,在进行log一下。
可以看到,二者是不同步的,master上的记录并没有改变,那如果dev分支我已经做好了,需要整理到master分支上,就需要这条指令了。
现在我们的主分支是master,用这个指令合并dev。
可以看到给你一些提示,说明我们已经和并完了。
现在我们再打印一下记录。
可以看到,a.txt的提交记录现在合并到了master上了。
5.git branch -d 分支名称
这条指令的意思是,删除某条分支,比如上个dev分支的任务已经做完了,我们就可以把它删除掉了。
OK,可以看到,现在又只剩下一个主分支master了。
6.git diff 分支1 分支2
字面意思,比较两个分支的差异,例如我们在创建一个dev,这个dev应该是复制master的,所以而这应该没有差异。
事实也是如此,现在我们用一下上一篇文章说的的回退指令。
可以看到,在我们给master分支进行了回退之后,我们再用这个指令就可以看到了master分支和dev分支已经有差异了。
7.git stash
有时候我们会有这个问题,如果dev分支的功能还没做完,但是我先要做别的,这个时候我们还不能合并到到主分支上,这个时候怎么办呢,就该用到这个指令了。
意思是将当前分支管理在本地的stash区,然后进行操作。
(1)git stash save message
这个是保存某个文件的意思,我们来用一下。
我们切换到dev分支并且修改一下a.txt。
现在我要去别的分支干活还不想合并到master上,就用这个。
现在我们已经把a.txt保存到了stash区域。
(2)git stash list/show
这个是查看stash区域的状态。
我们比较常用第一个,来看到里面的stash@{0},这个代表的是这条记录的算是名字吧。
(3)git stash apply stash @{number}
这个指令就是恢复刚才我们看到的那个名字,比如我把刚才保存的给恢复过来应该这么写
OK,这样我们就给他恢复过来了。
虽然给我们弹出了警告,是因为我们只是恢复了这条记录,但还没有提交,他在提示我们add和提交。
我们打开a.txt也可以看到内容已经恢复过来了。
(4)git stash drop stash @{number}
这个呢,就是删除某个记录的意思啦,比如我们把刚才的stash@{0}删除掉应该这没写。
可以看到指令执行完毕后,我们刚刚那条记录也不见了。
OK,关于Git的分支管理的内容也就说的差不多了。