Git教程(四):分支管理

分支管理

查看所有本地分支,当前分支前面会有一个*-r查看远程分支,-a查看所有分支

1
git branch

创建一个新分支

1
git branch <branch-name>

切换到指定分支,并更新工作区

1
git checkout <branch-name>

创建一个新分支,并切换到该分支

1
git checkout -b <branch-name>

删除一个已经合并的分支

1
git branch -d <branch-name>

删除一个分支,不管是否合并

1
git branch -D <branch-name>

给当前的提交打上标签,通常用于版本发布

1
git tag <tag-name>

合并分支

合并分支a到分支b,-no-ff参数表示禁用Fast forward模式,合并后的历史有分支,能看出曾经做过合并,而-ff参数表示使用Fast forward模式,合并后的历史会变成一条直线

1
git merge --no-ff -m "message" <branch-name>

1
git merge --ff -m "message" <branch-name>

合并&squash所有提交到一个提交

1
git merge --squash <branch-name>

rebase不会产生新的提交,而是把当前分支的每一个提交都“复制”到目标分支上,然后再把当前分支指向目标分支,而merge会产生一个新的提交,这个提交有两个分支的所有修改。

Rebase

Rebase操作可以把本地未push的分叉提交历史整理成直线,看起来更直观。但是,如果多人协作时,不要对已经推送到远程的分支执行Rebase操作。

1
2
git checkout <dev>
git rebase <main>

Git Flow

GitFlow 是一种流程模型,用于在 Git 上管理软件开发项目。

  • 主分支(master):代表了项目的稳定版本,每个提交到主分支的代码都应该是经过测试和审核的。
  • 开发分支(develop):用于日常开发。所有功能分支、发布分支和修补分支都应该从 develop 分支派生。
  • 功能分支(feature):用于开发单独的功能或特性。每个功能分支应该从 develop 分支派生,并在开发完成后合并回 develop 分支。
  • 发布分支(release):用于准备项目发布。发布分支应该从 develop 分支派生,并在准备好发布版本后合并回 master 和 develop 分支。
  • 修补分支(hotfix):用于修复主分支上的紧急问题。修补分支应该从 master 分支派生,并在修复完成后合并回 master 和 develop 分支。