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

87 阅读5分钟

介绍

Git 是一种分布式的版本控制系统,为开发者提供了管理和协作代码的能力。采用正确的 Git 使用方法和最佳实践,有助于提高代码的质量和效率,避免不必要的错误和冲突。本文将介绍 Git 的基本概念和常用命令,以及团队协作和版本控制的最佳实践。

Git 基本概念

工作流程和状态

Git 的工作流程包括以下四个阶段:

  • 工作区:开发者在工作区中对代码进行编辑和修改,这些修改暂未被 Git 跟踪。
  • 暂存区:开发者使用 git add 命令将工作区的修改添加到暂存区,这些修改已被 Git 跟踪但尚未提交。
  • 本地仓库:开发者使用 git commit 命令将暂存区的修改提交到本地仓库,生成一个唯一的哈希值。
  • 远程仓库:开发者使用 git push 命令将本地仓库的修改推送到远程仓库,实现代码同步和共享。

Git 状态

Git 的文件状态分为三种:

  • 未跟踪:文件在工作区中,未添加到暂存区或提交到本地仓库。
  • 已跟踪:文件已添加到暂存区或提交到本地仓库。
  • 已修改:文件已被跟踪,工作区中有新的修改,尚未添加到暂存区或提交到本地仓库。

Git 常用命令

分支管理

Git 分支一般有如下几种

  • 主分支:用于存放稳定、可发布的代码,不能直接进行开发。
  • 开发分支:团队成员进行功能开发和bug修复的主要分支,可基于主分支创建。
  • 功能分支:每个新功能在单独的分支上进行开发,完成后合并到开发分支。
  • 发布分支:功能开发完成后,创建发布分支进行部署和测试,修复bug,最后合并到主分支。
  • 修复分支:在主分支上创建修复分支修复紧急bug,修复后同时合并到开发分支和主分支。

Git 的分支管理包括以下几个方面:

  • 创建分支:使用 git branch 命令创建一个新的分支,并为其命名。例如:git branch feature-login
  • 切换分支:使用 git checkout 命令切换到另一个分支,并在该分支上进行工作。例如:git checkout feature-login
  • 合并分支:使用 git merge 命令将一个分支合并到另一个分支,并解决可能出现的冲突。例如:git checkout mastergit merge feature-login
  • 删除分支:使用 git branch -d 命令删除不再需要的分支,并释放空间。例如:git branch -d feature-login

提交规范

一般用如下的提交规范:

<类型>(<范围>): <主题>

类型有:

  • feat(新功能)
  • fix(问题修复)
  • docs(文档更新)
  • style(代码风格调整,不影响功能)
  • refactor(代码重构,不影响功能)
  • test(测试增加或修改)
  • chore(杂项工作)等。

范围是影响功能的范围,主题要简要描述做了什么,尽量精炼的概括。

远程仓库

将项目代码托管到远程仓库,便于团队协同开发

  1. 在远程仓库中创建项目,并邀请团队成员加入。你可以使用 git remote 命令来管理远程仓库的信息。例如:
git remote add origin https://github.com/username/reponame.git # 添加一个名为origin的远程仓库
git remote remove origin # 删除名为origin的远程仓库
git remote rename origin upstream # 将名为origin的远程仓库重命名为upstream
git remote show origin # 查看名为origin的远程仓库的详细信息
  1. 在本地仓库中克隆远程仓库,并创建你自己的分支。你可以使用 git clone 命令将远程仓库克隆到本地,然后使用 git branch 命令创建和切换分支。例如:
git clone https://github.com/username/reponame.git # 克隆远程仓库
git branch dev # 创建一个dev分支
git checkout dev # 切换到dev分支
  1. 在本地分支中修改代码,并将修改后的代码提交到本地仓库。你可以使用 git status 命令查看文件的状态,使用 git add 命令将文件添加到暂存区,使用 git commit 命令将文件提交到本地仓库。例如:
git add comment.go # 添加comment.go文件到暂存区
git commit -m "feat(comment): 添加评论功能" # 将文件提交到本地仓库
  1. 最后,将本地分支推送到远程仓库,并发送合并请求。你可以使用 git push 命令将本地分支推送到远程分支,使用 git pull 命令将远程分支拉取到本地并进行合并操作。例如:
git push origin dev # 将本地dev分支推送到远程仓库
git pull origin master # 将远程origin/master分支拉取到本地并合并到当前分支

Git 的合并

Git合并是将一个分支的修改合并到另一个分支并生成新的提交。

合并方式有两种:

  1. Fast-forward:如果被合并的分支是另一个分支的直接后继,只需移动指针到最新提交,不需创建新提交。保持提交历史线性,但丢失分支信息。
  2. Non-fast-forward:如果被合并的分支不是另一个分支的直接后继,需创建新提交记录两个分支合并情况。保留分支信息,但使提交历史变复杂。若有冲突,会创建新的提交,将指针移动到新的提交。