Git 的正确使用姿势与最佳实践| 青训营

95 阅读4分钟

这是我参与「第六届青训营 - 后端场」笔记创作活动的的最后一篇笔记和第二篇实践文章,选题是Git 的正确使用姿势与最佳实践。

暑假因为又实习又刷leetcode,我和我队友最后就剩下两个人坚持着这门课了,用docker搭配环境之后,把image share了给队友,但是最后就我和另一个队友两个人一起写代码,剩下六个队友因为太忙放弃了🫠。我写到代码一半的时候实在是又忙又拉不到人,最能看看是否能用8篇文章去满足条件4。Github可以我的提交记录,等我忙完这阵子面试就继续写吧,这门课挺好的。

Git 是一个分布式版本控制系统,用于跟踪在文件中的更改。下面是一些 Git 的正确使用姿势和最佳实践。

分支管理

Master 和 Develop 分支

通常,主分支(mastermain)应保持可部署的状态。开发分支(通常命名为develop)是用于日常开发的地方。

bashCopy code
# 创建并切换到 develop 分支
git checkout -b develop

功能分支

对于每一个新功能或修复,创建一个新的分支。

bashCopy code
# 创建并切换到一个新的功能分支
git checkout -b feature/new-feature

完成后,将功能分支合并回develop

bashCopy code
# 合并功能分支
git checkout develop
git merge feature/new-feature

提交信息

每次提交都应该有一个有意义的提交信息。这不仅有助于其他开发人员了解你所做的更改,也有助于代码审查。

bashCopy code
# 好的提交信息示例
git commit -m "Add login feature"

代码合并

使用git rebase而不是git merge来更新你的功能分支。这会创建一个更简洁、更直观的提交历史。

bashCopy code
# 更新功能分支
git checkout feature/new-feature
git rebase develop

解决冲突

在解决合并冲突后,使用git add将解决冲突的文件标记为已解决状态。

bashCopy code
# 标记解决冲突的文件
git add resolved-file.txt

历史记录

使用git loggit blame来查看文件的修改历史和了解谁做了哪些更改。

bashCopy code
# 查看提交历史
git log

# 查看文件的行级别历史
git blame file.txt

代码审查

在合并到主分支之前,代码应该经过代码审查。使用git pull request或类似的工具来完成这个任务。

我一般都是在git上操作。

Conventional Commits

我一般用Conventional Commits提交代码。

标准的 Conventional Commit 信息格式如下:

phpCopy code
<类型>(<范围>): <描述>
  • <类型>:表示更改的原因。这可以是 feat(表示新功能)、fix(表示修复 bug)、chore(表示常规任务)、docs(表示文档更新)、style(表示代码风格更改)、refactor(表示代码重构)、test(表示添加或修改测试)等。
  • <范围>:提交更改涉及的代码范围。这通常是代码库中受到更改的模块、函数或文件的名称。
  • <描述>:简短地描述此次提交做了什么。

比如:

  • feat(auth): 实现 OAuth2
  • fix(button): 修正按钮间距
  • chore(tests): 添加登录测试
  • docs(readme): 添加项目设置步骤

通过使用这种标准,团队成员可以更容易地理解每个提交的目的,而自动化工具(如生成更新日志、版本发布等)也可以更方便地解析提交历史。

同时,也可以用github ci做checking,可以增加对unit test coverage和代码质量检查。

Git 分支管理策略

我曾经用过Git Flow。Git Flow是一种 Git 分支管理策略,由 Vincent Driessen 于 2010 年提出。这种策略适用于有多人协作和需要多版本并行维护的项目,提供了一组明确的规则和操作指南,以便更有效地进行版本管理和发布。

主要分支:

  • Master 分支(或 Main 分支) :这个分支保存了所有已发布(或即将发布)版本的代码。它应该始终保持“可部署”的状态。
  • Develop 分支:这是日常开发活动的主要分支。当一个新功能开发完成时,它会被合并回这个分支。

辅助分支:

  • Feature 分支:从 develop 分支分出,用于开发新功能。完成后,再合并回 develop 分支。
  • Release 分支:从 develop 分支分出,用于即将发布的版本的准备工作,如 bug 修复和文档编写。完成后,合并回 masterdevelop 分支。
  • Hotfix 分支:从 master 分支分出,用于快速修复生产环境中的严重 bug。完成后,合并回 masterdevelop 分支。
# 初始化 Git Flow
git flow init

# 创建一个新的 Feature 分支
git flow feature start NEW_FEATURE

# 完成 Feature 开发
git flow feature finish NEW_FEATURE

# 开始一个 Release 分支
git flow release start VERSION

# 完成一个 Release
git flow release finish VERSION

# 创建一个 Hotfix 分支
git flow hotfix start VERSION

# 完成 Hotfix
git flow hotfix finish VERSION