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

140 阅读4分钟

Git 的正确使用姿势与最佳实践

Git 是一款强大的版本控制系统,对于团队协作和版本管理非常重要。下面是一些 Git 的最佳实践和正确使用姿势的笔记,供参考。

分支管理

  • 主分支保持稳定: master(或main)分支应该保持稳定,只用于发布稳定版本,避免直接在此分支上进行开发。
  • 特性分支: 每个新功能或修复应该在独立的分支上进行开发。创建一个新的分支,并在完成后合并回主分支。
  • 分支命名规范: 分支名最好使用有意义的名称,例如feature/add-user-authbugfix/fix-login-issue
  • 定期合并: 保持特性分支与主分支同步,定期合并主分支的变更到特性分支,避免长时间开发后才合并,减少冲突。
 # 创建特性分支
 git checkout -b feature/add-user-auth 
 # 合并主分支到特性分支
 git checkout feature/add-user-auth git merge master

提交信息

  • 清晰简洁: 提交信息应该清晰地描述做了什么修改,避免含糊不清的描述。
  • 分开关注点: 如果一个提交包含多个不同的更改,最好拆分成多个独立的提交,每个提交关注一个特定的修改。
  • 使用动词: 使用有意义的动词来描述提交的操作,例如fixaddupdate等。
  • 避免绝对路径: 避免在提交信息中包含绝对路径或与个人相关的信息,保持提交信息的通用性。
 # 提交更改
 git add file1.txt file2.txt 
 git commit -m "fix: resolve login issue"

远程仓库

  • 团队协作: 使用远程仓库进行团队协作,例如使用 GitHub,GitLab 或 Bitbucket。
  • Pull Requests: 对于主分支的修改,使用 Pull Requests 或 Merge Requests 进行代码评审,确保代码质量和一致性。
  • 保护分支: 保护主分支,确保只有经过代码审查并且测试通过的代码才能合并
 # 推送代码到远程仓库 
 git push origin feature/add-user-auth

常用命令

  • 拉取代码: 使用 git pull 命令获取远程仓库的最新代码。
  • 查看状态: 使用 git status 命令查看当前工作目录的状态,了解文件修改情况。
  • 分支操作: 使用 git branch 创建、删除和查看分支,使用 git checkout 切换分支。
  • 合并分支: 使用 git merge 合并特性分支到主分支。
  • 解决冲突: 在合并分支时,如果发生冲突,使用编辑器解决冲突,然后再次提交。
  • 提交日志: 使用 git log 查看提交日志,了解项目的修改历史。

忽略文件

  • 创建.gitignore 在项目根目录下创建.gitignore文件,列出不需要纳入版本控制的文件和目录。
  • 忽略规则: 确保.gitignore中包含编辑器生成的文件、依赖库、编译输出等。
 # .gitignore 示例 
 node_modules/ 
 build/ 
 .vscode/

版本标签

添加标签: 对于发布的稳定版本或重要的里程碑,可以添加标签来标识版本号。

 # 添加标签 
 git tag v1.0.0

推送标签: 确保推送标签到远程仓库,方便团队成员查看和使用。

 # 推送标签到远程仓库 
 git push origin v1.0.0

处理敏感信息

  • 密钥和密码: 不要将敏感信息如 API 密钥和密码直接提交到版本控制系统中。使用环境变量或专门的配置文件来管理敏感信息。
  • 加密: 对于包含敏感信息的文件,可以使用加密工具进行加密保护,并确保只有授权的团队成员能够解密和访问。

保持仓库整洁

合并历史: 在合并分支时,避免使用 --no-ff 参数,这样可以保持版本历史的清晰,更容易追溯和理解项目的发展。

 # 合并分支并保持历史记录清晰
 git merge --no-ff feature/awesome-feature

删除分支: 合并完成的特性分支可以删除,保持仓库的分支结构整洁。

 # 删除本地分支 
 git branch -d feature/add-user-auth
 # 删除远程分支 
 git push --delete origin feature/add-user-auth

使用 Rebase 替代 Merge

  • Rebase 优势: 使用 git rebase 可以将一个分支的提交移动到另一个分支的末尾,这样可以保持提交历史的线性和整洁。
  • Rebase vs. Merge: 在特性分支开发完成后,使用 git rebase 将主分支的最新代码合并到特性分支,并解决可能出现的冲突,然后再将特性分支合并回主分支。
 # 切换到特性分支
 git checkout feature/add-user-auth
 ​
 # 将主分支最新代码合并到特性分支
 git rebase master
 ​
 # 解决冲突(如果有)
 # git add <conflicting-files>
 # git rebase --continue
 ​
 # 将特性分支合并回主分支
 git checkout master
 git merge feature/add-user-auth
 ​

Git 高级特性

  • 交互式 Rebase: 使用 git rebase -i 可以进行交互式 rebase,对提交进行编辑、合并或重新排列。
  • 重置: 使用 git reset 可以撤销提交并将 HEAD 移动到指定的提交,慎用此功能,避免对已发布代码造成影响。
  • Cherry-pick: 使用 git cherry-pick 可以选择性地将一个或多个提交从一个分支复制到另一个分支。