文章目录
- 前言
- 一、分支管理策略
- 二、Bug分支管理
- 遇到Bug时的处理方法
- 使用 git stash 暂存工作区内容
- 创建并切换到Bug修复分支
- 恢复之前的工作
- 三、临时分支的删除
- 总结
前言
我们在上篇讲到了分支,现在我们就着这个继续来讲解!
一、分支管理策略
master分支稳定性:
- master 分支应当保持非常稳定,主要用于发布新版本。日常开发工作不应该直接在这个分支上进行,以确保其始终处于可部署状态。
dev分支作为开发主线:
- 日常开发工作应在 dev 分支上进行。这个分支可以包含不稳定的变化和实验性的功能。
- 当准备发布一个新版本时,将 dev 分支合并到 master 分支,并在 master 上打标签标识版本号。
个人分支与团队合作:
- 团队成员应基于 dev 分支创建自己的特性分支来完成特定任务或实现新功能。每个成员都可以自由地在各自的分支上工作,然后定期将更改合并回 dev 分支。
- 这样一来,团队合作的分支结构就会形成一个主干(dev),周围环绕着多个临时分支,代表不同的开发活动或特性实现。
日常开发环境:
- 开发人员提交的代码,还未经过测试验证
- 不稳定,存在bug
- dev分支
线上环境:
- APP、网站
- 稳定
- master主分支
测试流程:
- 经过一系列测试,最终将稳定的代码合并到master上
二、Bug分支管理
遇到Bug时的处理方法
场景描述:假设你正在 dev2 分支上进行开发,但突然发现 master 分支存在一个需要立即修复的bug。根据最佳实践,不应该直接在 master 分支上修复问题,而是应该创建一个专门用于修复bug的临时分支。
使用 git stash 暂存工作区内容
暂存当前工作:当你在 dev2 分支的工作尚未完成且无法提交时,可以使用 git stash 命令将当前工作区的信息储藏起来。这允许你在不提交的情况下切换分支,并确保稍后可以恢复这些更改。
git stash:执行此命令后,Git会保存所有已经被追踪文件的修改,例如对 ReadMe 文件所做的编辑。
检查stash内容:git stash list:查看当前存储的所有stash记录,确认哪些改动被保存
创建并切换到Bug修复分支
创建bug分支:从 master 分支创建一个新的分支来专门解决发现的问题。比如修复 ReadMe 文件中少一个字母c导致的bug。
完成修复后,记得提交更改并合并回 master 分支
恢复之前的工作
恢复工作区状态:修复完bug之后,你需要回到 dev2 分支继续未完成的工作。由于之前使用了 git stash,你现在可以通过 git stash pop 来恢复之前的工作区状态。这不仅恢复了你的改动,同时也清除了stash记录。
git stash pop:恢复最新的stash记录并将其从stash列表中删除。
分支间的差异:需要注意的是,即使你在 dev2 分支上恢复了之前的工作,它仍然基于修复bug之前的 master 状态,因此 dev2 分支不会包含修复后的代码。但这不影响你在 master 上所做的修复。
我们的最终目的是要让 master 合并 dev2 分支的,那么正常情况下我们切回 master 分支直接合并即可,但这样其实是有一定风险的。
是因为在合并分支时可能会有冲突,而代码冲突需要我们手动解决(在 master 上解决)。我们无法保证对于冲突问题可以正确地一次性解决掉,因为在实际的项目中,代码冲突不只一两行那么简单,有可能几十上百行,甚至更多,解决的过程中难免手误出错,导致错误的代码被合并到 master 上。
解决这个问题的一个好的建议就是:最好在自己的分支上合并下 master ,再让 master 去合并dev ,这样做的目的是 有冲突可以在本地分支解决并进行测试,而不影响 master 。
三、临时分支的删除
-
在软件开发过程中,新功能的添加是一个持续不断的需求。为了确保主分支(通常是 main 或 master)的稳定性,不会因为实验性质的代码而受到影响,每开发一个新的功能时建议创建一个独立的分支,通常称之为 feature 分支。
-
这个分支用于隔离新功能的开发工作,直到该功能完成并经过测试后,再将其合并回主分支。之后,可以安全地删除 feature 分支,以保持仓库的整洁。
然而,有时候项目需求会发生变化。例如,如果你正在某个 feature 分支上开发新功能,但中途被要求停止开发——这可能是由于优先级的变化或其他原因——那么即使这部分工作尚未完成或合并,也需要删除这个 feature 分支。
在这种情况下,使用常规的 git branch -d 命令是不够的,因为它只允许删除已经被合并过的分支。对于未合并的分支,你需要使用强制删除命令:
git branch -D [分支名]
此命令会立即删除指定的分支,无论它是否已经合并。
分支机制为开发者提供了极大的灵活性和安全性。假设你着手开发一个预计需要两周才能完成的新功能,在开发的第一周内你可能只完成了50%的工作。
此时,如果你直接在主分支上提交不完整的代码,可能会干扰团队中其他成员的工作;相反,如果你等到全部完成后再一次性提交,又面临着丢失每日进度的风险。
通过创建个人专属的分支,你可以自由地进行开发,不受他人工作的干扰,同时也不会影响到别人。你可以随时提交更改,保护每天的工作进度。一旦开发完成并通过了必要的审查和测试,就可以将你的分支合并回主分支。
总结
Git 的分支操作非常高效,无论是创建、切换还是删除分支,都能在一秒钟内完成,不论版本库包含多少文件。
利用 Git 的分支功能来管理不同阶段和类型的开发工作流,是一种既便捷又高效的方法~