一、Git 基础概念
1. 什么是 Git
Git 是一个分布式版本控制系统,用于跟踪文件的变化,协调多人协作开发。它由 Linus Torvalds 于 2005 年创建,现已成为最流行的版本控制工具。
2. Git 的核心概念
(1)仓库(Repository)
仓库是 Git 用来保存项目的地方,包含所有的文件和历史记录。仓库分为本地仓库和远程仓库两种类型。
(2)工作区、暂存区和版本库
Git 的工作流程涉及三个主要区域:工作区是你实际编辑文件的地方;暂存区是准备提交的文件的临时存储区;版本库则保存着所有的提交历史。
二、Git 安装与配置
1. 安装 Git
(1)Windows 系统
在 Windows 系统上,可以通过以下步骤安装 Git:
- 访问 Git 官网下载安装包
- 运行安装程序,按照提示完成安装
- 打开命令行工具,输入
git --version验证安装
(2)macOS 系统
macOS 用户可以通过 Homebrew 安装:在终端中运行 brew install git 命令即可完成安装。
(3)Linux 系统
不同的 Linux 发行版有不同的安装方式:Ubuntu 和 Debian 系统使用 sudo apt-get install git;CentOS 和 Fedora 系统使用 sudo yum install git。
2. 配置用户信息
安装完成后,需要配置用户名和邮箱:
bash
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
三、Git 基本操作
1. 创建和克隆仓库
(1)初始化新仓库
在项目目录下执行 git init 命令,即可将当前目录初始化为 Git 仓库。
(2)克隆远程仓库
使用 git clone [仓库地址] 命令可以将远程仓库完整地复制到本地。
2. 文件操作流程
(1)查看状态
git status 命令用于查看当前工作区和暂存区的状态,了解哪些文件被修改、新增或删除。
(2)添加文件到暂存区
使用以下命令将文件添加到暂存区:
git add [文件名]:添加指定文件git add .:添加所有修改的文件git add -A:添加所有变化的文件
(3)提交更改
git commit -m "提交说明" 命令将暂存区的内容提交到版本库。提交说明应该简洁明了地描述本次修改的内容。
3. 查看历史记录
(1)查看提交历史
常用的查看历史命令包括:
git log:显示详细的提交历史git log --oneline:以简洁的单行格式显示git log --graph:以图形化方式显示分支结构
(2)查看文件差异
git diff:查看工作区与暂存区的差异git diff --staged:查看暂存区与最新提交的差异git diff [commit1] [commit2]:比较两个提交之间的差异
四、分支管理
1. 分支基本操作
(1)创建和切换分支
分支操作的基本命令:
git branch [分支名]:创建新分支git checkout [分支名]:切换到指定分支git checkout -b [分支名]:创建并切换到新分支
(2)查看和删除分支
git branch:查看本地分支列表git branch -r:查看远程分支列表git branch -a:查看所有分支git branch -d [分支名]:删除已合并的分支git branch -D [分支名]:强制删除分支
2. 分支合并
(1)合并分支
使用 git merge [分支名] 命令将指定分支合并到当前分支。合并过程中可能会遇到冲突,需要手动解决。
(2)解决冲突
当合并出现冲突时,需要按照以下步骤处理:
- 打开冲突文件,找到冲突标记
- 手动编辑文件,保留需要的内容
- 删除冲突标记
- 使用
git add标记冲突已解决 - 执行
git commit完成合并
五、远程仓库操作
1. 远程仓库管理
(1)添加远程仓库
git remote add origin [仓库地址] 命令用于添加远程仓库,其中 origin 是远程仓库的别名。
(2)查看远程仓库
git remote:查看远程仓库列表git remote -v:查看远程仓库详细信息
2. 推送和拉取
(1)推送到远程仓库
推送命令的使用方式:
git push origin [分支名]:推送指定分支git push -u origin [分支名]:推送并设置上游分支git push --all:推送所有分支
(2)从远程仓库拉取
git fetch:获取远程仓库的更新但不合并git pull:获取并自动合并远程更新git pull --rebase:使用变基方式合并
六、高级技巧
1. 版本回退
(1)撤销修改
不同场景下的撤销操作:
git checkout -- [文件名]:撤销工作区的修改git reset HEAD [文件名]:撤销暂存区的修改git reset --hard [commit]:回退到指定版本
(2)修改提交
git commit --amend:修改最近一次提交git rebase -i [commit]:交互式修改历史提交
2. 标签管理
(1)创建标签
标签用于标记重要的版本节点:
git tag [标签名]:创建轻量标签git tag -a [标签名] -m "说明":创建附注标签git tag [标签名] [commit]:给指定提交打标签
(2)推送标签
git push origin [标签名]:推送指定标签git push origin --tags:推送所有标签
3. Git 工作流
(1)Git Flow 工作流
Git Flow 定义了以下分支类型:
- master:主分支,存放稳定版本
- develop:开发分支,日常开发使用
- feature:功能分支,开发新功能
- release:发布分支,准备新版本发布
- hotfix:热修复分支,紧急修复线上问题
(2)GitHub Flow 工作流
GitHub Flow 是一种更简单的工作流:
- 从 master 创建功能分支
- 在功能分支上进行开发
- 提交 Pull Request
- 代码审查和讨论
- 合并到 master 并部署
七、最佳实践
1. 提交规范
(1)提交信息格式
良好的提交信息应该包含:类型(feat、fix、docs、style、refactor、test、chore)、范围(可选)、简短描述、详细说明(可选)和关联问题(可选)。
(2)提交频率
建议遵循以下原则:每个提交应该是一个独立的、完整的功能点;避免提交过大或过小;保持提交历史的清晰和可读性。
2. 分支策略
(1)分支命名规范
统一的命名规范有助于团队协作:
- feature/功能名称:新功能开发
- bugfix/问题描述:错误修复
- hotfix/紧急修复:线上紧急问题
- release/版本号:发布准备
(2)分支保护
对重要分支设置保护规则:禁止直接推送、要求代码审查、通过测试后才能合并、限制谁可以合并等。
3. 协作建议
(1)代码审查
代码审查的重要性:
- 提高代码质量
- 知识共享
- 发现潜在问题
- 统一编码风格
(2)冲突预防
减少冲突的方法:经常拉取最新代码、及时合并主分支的更新、避免多人同时修改同一文件、保持良好的沟通。
八、常见问题解决
1. 配置问题
(1)SSH 密钥配置
设置 SSH 密钥的步骤:
- 生成密钥:
ssh-keygen -t rsa -b 4096 - 复制公钥:
cat ~/.ssh/id_rsa.pub - 添加到 GitHub/GitLab 账户
- 测试连接:
ssh -T git@github.com
(2)代理设置
在需要代理的环境下,可以配置 Git 代理:HTTP 代理使用 git config --global http.proxy http://代理地址:端口;HTTPS 代理使用 git config --global https.proxy https://代理地址:端口。
2. 性能优化
(1)大文件处理
使用 Git LFS(Large File Storage)处理大文件:
- 安装 Git LFS
- 跟踪大文件类型:
git lfs track "*.psd" - 正常添加和提交文件
(2)仓库清理
定期清理仓库:
git gc:垃圾回收,优化仓库git prune:删除不可达的对象git clean -fd:删除未跟踪的文件和目录