1. 理解分支概念

在 Git 中,分支是指向提交历史的一个指针。创建分支意味着你可以从当前提交开始一个新的开发线。

2. 创建和切换分支

创建新分支:

1
git branch new-branch-name

切换到现有分支:

1
git checkout existing-branch-name

创建并切换到新分支(快捷方式):

1
git checkout -b new-branch-name

3. 查看分支

查看本地所有分支:

1
git branch

查看远程分支:

1
git branch -r

查看本地和远程分支:

1
git branch -a

4. 合并分支

合并另一个分支到当前分支:

1
git merge other-branch-name

合并时解决冲突:

如果合并过程中出现冲突,你需要手动解决这些冲突后,再提交合并。

5. 删除分支

删除本地分支:

1
git branch -d branch-to-delete

删除远程分支:

1
git push origin --delete branch-to-delete

6. 推送分支

推送本地分支到远程仓库:

1
git push origin branch-name

7. 拉取分支

从远程仓库拉取分支(并切换到该分支):

1
git checkout -b new-branch-name origin/existing-branch-name

8. 设置跟踪分支

设置本地分支跟踪远程分支:

1
git branch --set-upstream-to=origin/branch-name local-branch-name

9. 重命名分支

重命名本地分支:

1
git branch -m old-branch-name new-branch-name

重命名远程分支:

1
git push origin :old-branch-name new-branch-name

10. 使用分支策略

1. 特性分支(Feature Branches)

目的:为新功能或重大更改创建独立的开发环境。
操作:从主分支(如 develop 或 main)创建特性分支,进行开发和测试,完成后合并回主分支。
命名约定:通常以 feature/ 开头,后跟描述性的名称,如 feature/new-login-system

2. 发布分支(Release Branches)

目的:准备新版本的发布,包括最后的测试、文档更新和 bug 修复。
操作:从主分支创建发布分支,进行发布前的准备工作,完成后合并回主分支和生产分支。
命名约定:通常以 release/ 开头,后跟版本号,如 release/1.2.3

3. 维护分支(Maintenance Branches)

目的:为旧版本提供长期支持,修复关键问题和安全漏洞。
操作:从相应的发布标签创建维护分支,进行必要的修复,完成后合并回主分支。
命名约定:通常以 maintenance/ 开头,后跟版本号,如 maintenance/1.2

4. 热修复分支(Hotfix Branches)

目的:快速修复生产环境中的紧急问题。
操作:从生产分支创建热修复分支,进行修复,完成后合并回生产分支和主分支。
命名约定:通常以 hotfix/ 开头,后跟描述性的名称,如 hotfix/urgent-security-issue

5. 开发分支(Development Branches)

目的:作为日常开发的基础,所有新功能和更新都在这里进行。
操作:团队成员通常从开发分支创建特性分支,开发完成后合并回开发分支。
命名约定:通常是 developmain

6. 生产分支(Production Branches)

目的:代表生产环境的稳定版本。
操作:只有经过充分测试的代码才能合并到生产分支。
命名约定:通常是 mastermain

7. 试验分支(Experiment Branches)

目的:尝试新想法或技术,不保证会合并到主分支。
操作:可以自由地进行实验性开发,如果成功,可以合并到特性分支或主分支。
命名约定:通常以 experiment/ 开头,如 experiment/new-algorithm

分支策略的最佳实践:

  • 保持分支简短:分支应该只用于特定的开发周期,完成后应该合并或删除。
  • 频繁合并:定期将主分支的更改合并到特性分支,以减少合并冲突。
  • 代码审查:在合并分支之前,进行代码审查以确保代码质量和一致性。
  • 自动化测试:在合并之前运行自动化测试,确保新代码不会破坏现有功能。
  • 分支保护:在关键分支(如生产分支)上启用保护,防止未经审查或未通过测试的代码被合并。
  • 文档化:记录分支策略和工作流程,确保所有团队成员都了解并遵守。

11. 分支管理工具

  • Git Flow:一种基于分支的 Git 工作流程,定义了如何使用分支来管理功能开发、发布准备和维护。
  • GitHub Flow:一种更简单的工作流程,鼓励频繁地合并到主分支。

12. 最佳实践

  • 保持分支简洁:分支应该有一个明确的目的,一旦完成就合并或删除。
  • 定期同步:定期将远程分支的更新合并到本地分支,以保持同步。
  • 代码审查:在合并分支之前,进行代码审查以确保代码质量。
  • 自动化测试:在合并分支之前,运行自动化测试以确保新代码不会破坏现有功能。

13. 解决冲突

当分支合并时,如果存在冲突,Git 会提示你解决这些冲突。你需要手动编辑冲突的文件,然后使用以下命令标记冲突已解决:

1
git add conflicted-file

解决所有冲突后,提交合并。

14. 使用交互式 rebase

交互式 rebase 允许你修改提交历史,例如修改提交信息、合并提交或删除提交:

1
git rebase -i HEAD~n

其中 n 是你想要回溯的提交数量。

15. 避免在生产分支上进行 rebase

在生产分支(如 mastermain)上使用 rebase 可能会导致问题,因为其他人可能已经基于这些分支进行了开发。

16. 使用 cherry-pick

如果你想要将一个提交从一个分支应用到另一个分支,可以使用 cherry-pick:

1
git cherry-pick commit-hash

17. 分支策略和团队协作

在团队中,明确分支策略和工作流程非常重要。确保所有团队成员都了解并遵守这些规则。

18. 使用 Git 钩子

Git 钩子可以在特定的重要动作发生时自动执行脚本。例如,你可以使用 pre-commit 钩子来运行代码风格检查。

19. 分支可视化工具

使用 Git 可视化工具,如 SourceTree、GitKraken 或 GitHub Desktop,可以帮助你更直观地管理分支。