Git 完整指南:基础、命令与规范
Git 完整指南:基础、命令与规范

Git 是一个强大的分布式版本控制系统,广泛用于管理源代码和版本控制。掌握 Git 的基本概念、常用命令以及开发规范,可以帮助你提高开发效率并保持代码质量。本文将详细介绍 Git 的基本概念、主要用法以及推荐的开发规范。

一、Git 基本概念

  • 仓库(Repository)

    Git 仓库是存储项目文件及其版本历史的地方。可以是本地仓库,也可以是远程仓库。 本地仓库:存储在你的计算机上。 远程仓库:存储在网络上的仓库,例如 GitHub、GitLab 或 Bitbucket。

  • 分支(Branch)

    分支是独立的开发线。主分支通常是 main 或 master ,其他分支用于独立的功能开发或修复。

  • 提交(Commit)

    提交是对文件更改的记录。每次提交都会生成一个唯一的哈希值(commit hash),记录当前文件的状态和变更信息。

  • 暂存区(Staging Area)

    暂存区是一个中间区域,用于准备即将提交的文件。在提交之前,文件会被添加到暂存区。

  • 远程仓库(Remote Repository)

    远程仓库是存储在互联网上的仓库,允许团队成员之间共享代码和同步更改。

二、Git 常用命令

1. 仓库操作

初始化仓库

git init

在当前目录初始化一个新的 Git 仓库。

克隆仓库

git clone <repository_url>

从远程仓库克隆代码到本地。

查看仓库状态

git status

显示工作目录和暂存区的状态。

查看仓库信息

git remote -v

显示远程仓库的详细信息,如 URL。

2. 文件操作

添加文件到暂存区

git add <file>
git add .  # 添加所有文件

从暂存区移除文件

git reset <file>

提交更改

git commit -m "commit message"
git commit -a  # 自动添加并提交所有更改

查看提交历史

git log
git log --oneline  # 简洁的提交历史
git log --graph  # 图形化显示提交历史

3. 分支操作

创建分支

git branch <branch_name>

切换分支

git checkout <branch_name>
git switch <branch_name>  # 新版本的切换命令

创建并切换分支

git checkout -b <branch_name>

删除分支

git branch -d <branch_name>  # 删除本地分支
git branch -D <branch_name>  # 强制删除本地分支

合并分支

git merge <branch_name>

解决合并冲突

# 编辑冲突文件
git add <file>
git commit -m "Resolve merge conflict"

查看分支列表

git branch
git branch -a  # 查看所有分支,包括远程分支

4. 远程仓库操作

添加远程仓库

git remote add <name> <url>

查看远程仓库

git remote -v

修改远程仓库 URL

git remote set-url <remote_name> <new_url>

推送到远程仓库

git push <remote> <branch_name>

从远程仓库拉取更新

git pull <remote> <branch_name>

获取远程更新

git fetch <remote>

删除远程分支

git push <remote> --delete <branch_name>

5. 版本恢复和操作

查看文件的历史

git log <file>

还原文件到某个提交

git checkout <commit_hash> <file>

还原暂存区文件

git restore --staged <file>

重置到某个提交

git reset <commit_hash>
git reset --hard <commit_hash>  # 严重模式,丢弃所有更改

6. 标签操作

创建标签

git tag <tag_name>
git tag -a <tag_name> -m "tag message"  # 创建带有注释的标签

查看标签

git tag

推送标签到远程

git push <remote> <tag_name>

删除标签

git tag -d <tag_name>
git push <remote> --delete <tag_name>

7. 配置和别名

设置用户信息

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

设置别名

git config --global alias.co checkout
git config --global alias.br branch

查看配置

git config --list

8. 高级功能

变基操作

git rebase <branch_name>

交互式重置

git reset -i <commit_hash>

创建补丁

git format-patch <commit_hash>

应用补丁

git am <patch_file>

三、Git 开发规范

1. 分支策略

  • 主分支(mainmaster

    主分支是代码的稳定版本,始终包含可以部署到生产环境的代码。所有功能开发和修复都应该在其他分支上进行,且主分支上的代码应通过自动化测试验证。

  • 功能分支(Feature Branches)

    用于开发新功能或特性。使用清晰且描述性的命名,例如 feature/login-page

  • 修复分支(Bugfix Branches)

    用于修复主分支上发现的 bug。使用描述性命名,例如 bugfix/login-error

  • 发布分支(Release Branches) 用于准备发布版本,包括最后的修复和文档更新。使用 release 作为前缀,例如 release/v1.0.0

  • 热修复分支(Hotfix Branches)

    用于处理生产环境中的紧急问题。使用 hotfix 作为前缀,例如 hotfix/critical-bug

2. 提交规范

提交信息格式

`feat / feature`:引入全新代码或新功能的所有更改
`fix`:修复错误的更改(理想情况下,如果存在问题,您还将引用问题)
`refactor`:任何与代码相关的更改,既不是修复也不是功能
`docs`:更改现有文档或创建新文档(即 README、lib 或 cli 用法的文档)
`build`:有关软件构建、依赖项更改或添加新依赖项的所有更改
`test`:有关测试的所有更改(添加新测试或更改现有测试)
`ci`:有关持续集成配置的所有更改(即 github 操作、ci 系统)
`chore`:对存储库的所有更改,这些更改不属于上述任何类别

3. 合并策略

  • 合并请求(Pull Request)

    通过合并请求(PR)审查和讨论代码更改,确保代码质量和一致性。确保 PR 得到适当的审查和批准后再合并到主分支。 PR 描述中详细说明更改的内容和目的。

  • 合并策略

    将功能分支或修复分支合并到主分支,保持主分支的更新。在合并前进行变基操作,将功能分支的更改移到主分支的最新提交上,保持提交历史的整洁。

4. 标签和版本控制

  • 创建标签:在发布新版本时,创建标签以标记代码的特定版本。
git tag -a v1.0.0 -m "Release version 1.0.0"
  • 推送标签
git push origin v1.0.0

5. 其他最佳实践

  • 保持分支小而专注

    确保每个分支只做一个功能或修复,以便于管理和审查。

  • 频繁提交

    将更改频繁提交到分支,以便跟踪进度和减少合并冲突。

  • 写明明确的提交信息

    明确的提交信息有助于回溯和理解代码变更的历史。