分支管理
查看所有本地分支,当前分支前面会有一个*
,-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 | git checkout <dev> |
Git Flow
GitFlow 是一种流程模型,用于在 Git 上管理软件开发项目。
主分支(master)
:代表了项目的稳定版本,每个提交到主分支的代码都应该是经过测试和审核的。开发分支(develop)
:用于日常开发。所有功能分支、发布分支和修补分支都应该从 develop 分支派生。功能分支(feature)
:用于开发单独的功能或特性。每个功能分支应该从 develop 分支派生,并在开发完成后合并回 develop 分支。发布分支(release)
:用于准备项目发布。发布分支应该从 develop 分支派生,并在准备好发布版本后合并回 master 和 develop 分支。修补分支(hotfix)
:用于修复主分支上的紧急问题。修补分支应该从 master 分支派生,并在修复完成后合并回 master 和 develop 分支。