GitFlow

1 GitFlow 规范

GitFlow 是团队开发的一种最佳实践,将代码划分为以下几个分支:

GitFlow

  • Master 主分支,上面只保存正式发布的版本
  • Hotfix 线上代码 Bug 修复分支,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag。
  • Feather 功能分支,当开发某个功能时,创建一个单独的分支,开发完毕后再合并到 dev 分支。
  • Release 分支,待发布分支,Release分支基于Develop分支创建,在这个Release分支上测试,修改Bug。
  • Develop 开发分支,开发者都在这个分支上提交代码。

2 开发者工作流程

目前,远程仓库中有 master 分支、dev 分支两个保护分支。

① 克隆仓库并切换到开发分支

克隆远程仓库到本地,默认只有 master 分支。

git clone 远程仓库地址

创建与远程仓库关联的 dev 分支

git branch dev origin/dev
git switch dev

# 或者 创建关联并切换
git switch -c dev origin/dev

# 再或者,同样创建关联并切换
git checkout -b dev origin/dev

② 基于 dev 分支创建功能分支并进行开发

创建分支并切换

git branch 分支名
git switch 分支名

# 或者
git switch -c 分支名

# 再或者
git checkout -b 分支名

将本地的功能分支推送到远程仓库并建立联系,注意是否需要将功能分支推送到远程仓库,这取决于项目的开发流程和要求。

git push --set-upstream origin/分支名

可以使用命令查看本地分会与远程仓库分支的对应关系

git branch -vv

在功能分支下开发,进行大量的添加提交,与远程仓库的功能分支同步。

git pull
git add -A
git commit -m "提交信息"
git push
...

③ 同步 dev 分支的最新内容到本地的功能分支

dev 分支拉取更新。

# 切换到 dev 分支
git switch dev  # 或者 git checkout dev

# 拉取远程更新
git pull

将 dev 分支中的更新添加到功能分支中。

# 切换回功能分支
git switch 功能分支名  # 或者 git checkout 功能分支名

# 将 dev 分支的新内容 rebase 到功能分支上, 这个时候可能会出现冲突,如果出现冲突手动确定保留哪些,再添加提交
git rebase dev

rebase 的过程中,可能会出现冲突,这时候需要手动修改保留哪些内容,然后添加提交,并继续 rebase。

# 添加提交
git add -A
git commit -m '提交信息'

# 继续 rebase
git rebase --continue

最后将本地功能分支的修改推送到远程仓库,注意,由于进行了 rebase,我们不再进行 pull 操作,直接进行强制 push,否则 rebase 时候出现的冲突还会再出现一遍。

git push -f

④ 发起 pull Request

在远程仓库上发起 pull request,这里以 Gitee 为例。

发起 pull request 之后,管理员会进行审查、测试,确保无误会进行合并,当 pull request 通过之后,我们需要在本地切到 dev 分支,拉取合并后的最新内容。

git switch dev # 或者 git checkout dev
git pull

最后,可以将本地的功能分支与远程仓库的功能分支删除。

# 删除本地功能分支
git branch -d 分支名

# 删除远程仓库功能分支
git push origin --delete 分支名

results matching ""

    No results matching ""