[TOC]

1.分支类别

1
2
3
4
5
1.Main   主分支
2.Develop 开发分支
3.feature 功能分支(临时分支)
4.release 预发布分支(临时分支)
5.fixbug 修复bug分支(临时分支)

2.分支作用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1.Main 主分支作用
代码库有且仅有一个主分支,所有提供给用户使用的正式版本,都在这个主分支上发布,主分支只用来分布重大版本,每次重大发布打tag标记。

2.Develop 开发分支
日常开发分支,我们把开发用的分支,叫做Develop。这个分支可以用来生成代码的最新隔夜版本(nightly)。如果想正式对外发布,就在Main分支上,对Develop分支进行"合并"(merge)

3.feature 功能分支(临时分支)
临时分支 使用完以后,应该删除,使得代码库的常设分支始终只有Main和Develop。它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop。功能分支的名字,可以采用feature-name-time的形式命名,例如:feature-bright-230612。

4.release 预发布分支(临时分支)
它是指发布正式版本之前(即合并到Main分支之前),我们可能需要有一个预发布的版本进行测试。预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Main分支。它的命名,可以采用release-name-time的形式。

5.fixbug 修复bug分支(临时分支)
修补bug分支是从Main分支上面分出来的,修补结束以后,再合并进Main和Develop分支。它的命名,可以采用fixbug-name-time的形式 如:fixbug-bright-230612

3.合并分支

1
2
3
4
5
6
7
8
9
10
11
- 查看当前处于哪个分支:
git branch -a
- Git创建Develop分支的命令:
git checkout -b develop Main

- 将Develop分支发布到Main分支的命令:
1.切换到Main分支:
git checkout Main
2.对Develop分支进行合并:
git merge --no-ff develop
解释:默认情况下,Git执行"快进式合并"(fast-farward merge)会直接将Main分支指向Develop分支。使用--no-ff参数后,会执行正常合并,在Main分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。

4.功能分支(临时分支)

1
2
3
4
5
6
7
8
9
10
示例:
- 创建一份新的分支:
git checkout -b feature-kefu-230612 develop
- 合并到开发分支:
git checkout develop
git merge --no-ff feature-kefu-230612

- 删除已合并分支:
git branch -d feature-kefu-230612

5.预发布分支(临时分支)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 创建预发布分支:
git checkout -b release-kefu-150215 develop
- 确认无问题后 合并到Main分支
git checkout Main
git merge --no-ff release-kefu-150215

- 对合并生成的新节点,做一个标签
git tag -a v1.1

- 再合并到开发分支
git checkout develop
git merge --no-ff release-kefu-150215

- 删除分支:
git branch -d release-kefu-150215

6.修复bug分支(临时分支)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- 创建一个修补bug分支:
git checkout -b fixbug-kefu-230612 Main

- 修补结束后,合并到Main分支:
git checkout Main
git merge --no-ff fixbug-kefu-230612
git tag -a v1.2_3

- 再合并到develop分支:
git checkout develop
git merge --no-ff fixbug-kefu-230612

- 最后,删除"修补bug分支":
git branch -d fixbug-kefu-230612

7.其它git操作

7.1 test分支版本回退

1
2
3
git log
git reset --hard id //选择要回退的id
git push -f origin test //回退后强制推送到远程仓库

7.2 git拉取远程分支

1
2
git fetch origin dev //从远程获取最新版本到本地,不会自动merge
git checkout -b 本地分支名 origin/远程分支名

7.3 拉取远程分支到本地分支

1
2
git checkout mydev  //切换到本地分支
git pull origin dev //将远程仓库中的dev分支拉取到mydev分支

7.4 删除本地分支及远程分支

1
2
git branch -D dev  //删除本地分支
git push origin :dev //删除远程分支s

7.5 删除本地及远程仓库tag

1
2
git tag -d v2.9.0        //本地删除tag
git push origin :refs/tags/v2.9.0     //本地tag删除了,再执行该句,删除线上tag

7.6 查看最近3条更新日志,并简单显示出所涉及的文件

1
2
git log -3 --stat
git show 3dbfdbccc8238ff688316e481266cfbda8733b8d //查看修改了文件的那些内容