【学习笔记】Git branch

在开发专案时可能会有多人同时commit和push的状况,很容易有conflict,这时候就需要使用分支来避免conflict。

branch是git中很重要的概念,透过branch可以分流处理不同的问题,也可以进行多人协作,非常方便。
branch可以想像成是原分支的复制版,会继承目前的commit和前面所有的commit。在新的分支上进行开发的话,不会影响到原本的分支,也不会影响到其他分支。
https://ithelp.ithome.com.tw/upload/images/20220225/201468294l72nidfCE.png
上图中可以看到,有main和dev两个分支,main的commit有C0、C1;dev则是有C0~C4的commit。

建立branch

要建立分支,可以使用git branch <分支名称>来建立。
https://ithelp.ithome.com.tw/upload/images/20220225/201468296ka9fjBqeE.png](http://)
如果要切换分支,可以使用git checkout <branch>git switch <branch>,图片上的「」符号代表现在所在分支。

checkout就像是移动标记的指令,透过checkout指令可以移动到想要的位置。此外,checkout同时也有复原的作用。
比较新的git将checkout的功能分开成两个指令:switch(移动)和restore(回复),基本上新旧做法都能使用。

如果要在新建分支的同时切换分支,可以使用git switch -c <branch>(c for create)或git checkout -b <branch>

合并分支

如果想要将两条不同分支的内容合并以方便版本管理的话,可以使用git merge <branch>git rebase <branch>的方法。

merge

https://ithelp.ithome.com.tw/upload/images/20220302/20146829P5CvTZ0ara.png
如上图,merge会送出一个特殊的commit,同时继承自两条分支的最後一个commit,因此,merge後的main分支可以追溯两条不同分支的commit。

rebase

相对於merge,rebase有点像是把别条分支的commit剪下贴上过来,使用git rebase <目的地分支> <要移动的分支>(若是要移动目前所在分支,可以不用打後面的部分),可以移动分支。
https://ithelp.ithome.com.tw/upload/images/20220302/20146829nhinWNV6w9.png
如上图,将new-f分支剪下贴上到main分支,new-f分支变成在main的後面,C2也移动过去变成C2'。
若须要更新main分支到new-f的位置,可以用merge或rebase,让main快速移动到目前所在位置。
https://ithelp.ithome.com.tw/upload/images/20220302/20146829qdDYhjBBfN.png
https://ithelp.ithome.com.tw/upload/images/20220302/20146829XDeRx2opaj.png

branch常用指令

git checkout -b <branch名称>:建立新branch并切换过去。
git branch:可以看到所有branch。
git branch -a:可以看到remote上所有的branch。

git rebase <要移到哪个分支>:将branch的进度接回最新进度。
git rebase --continue: 解决冲突後继续rebase。
git branch -d <branch>: 删除本地branch。
git merge <branch>: 把目前branch整并回另一个分支。

最後附上图片中的网站: Learn Git Branch,一个图像化、可以实作的git学习网站,非常好用!


<<:  用新技术加强您的内部稽核-将稽核软件引入组织的 7 个步骤

>>:  【HTML】【CSS】如何处理inline-block 元素之间的空白

使用 MockK 做测试

接下来的测试将会需要用到 mocking 的 library ,在 Android 大家比较常用的是...

Sorting Algorithms

排序演算法在程序中是非常重要的以下会先来介绍三个基本的排序演算法 Bubble sort Inser...

第 29 集:Bootstrap 客制化 component 元件样式

此篇延续上一篇元件样式修改,此篇着重在元件的动态效果样式。 option 参数 撰写动态效果起手式...

Python for回圈

今天要来教大家for回圈,for回圈在Python也是常常会用到的一种语法,有时候我们会希望让程序中...

[Day27]- 新手的Web系列CRLF 0x2

Day27- 新手的Web系列CRLF 0x2 正文 CRLF Injection原理 HTTP H...