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. 分支策略
-
主分支(
main
或master
)主分支是代码的稳定版本,始终包含可以部署到生产环境的代码。所有功能开发和修复都应该在其他分支上进行,且主分支上的代码应通过自动化测试验证。
-
功能分支(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. 其他最佳实践
-
保持分支小而专注:
确保每个分支只做一个功能或修复,以便于管理和审查。
-
频繁提交:
将更改频繁提交到分支,以便跟踪进度和减少合并冲突。
-
写明明确的提交信息:
明确的提交信息有助于回溯和理解代码变更的历史。