[TOC]

1.分支类别

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

2.分支作用

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.合并分支

- 查看当前处于哪个分支:
  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.功能分支(临时分支)

示例:
- 创建一份新的分支:
  git checkout -b feature-kefu-230612 develop
- 合并到开发分支:
  git checkout develop
  git merge --no-ff feature-kefu-230612

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

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

- 创建预发布分支:
  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分支(临时分支)

- 创建一个修补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分支版本回退

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

7.2 git拉取远程分支

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

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

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

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

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

7.5 删除本地及远程仓库tag

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

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

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