Fadey's Blog

arrow_back 返回首页
Git指南封面

Git完全指南:从入门到精通的版本控制艺术

Git 是现代软件开发的基石。掌握 Git 可以有效管理代码变跟踪、协作开发并保护你的工作成果。本指南将带你从 Git 基础进阶到高级工作流。

第一章:Git基础

理解 Git 的核心概念:

1. 三个区域

工作区、暂存区和仓库区:

  • 工作区:实际的文件目录
  • 暂存区:保存下次提交的变更集
  • 仓库区:本地 .git 目录,存储对象数据库

2. 基本工作流

# 初始化仓库
git init

# 配置用户信息
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

# 查看状态
git status

# 添加文件到暂存区
git add filename.txt
git add .  # 添加所有变更

# 创建提交
git commit -m "描述性的提交信息"

第二章:分支与合并

1. 分支管理

分支是指向提交的可移动指针:

# 创建并切换到新分支
git branch feature-new-feature
git checkout feature-new-feature

# 简化操作:创建并切换
git checkout -b feature-new-feature

# 查看所有分支
git branch

# 删除分支(已合并后)
git branch -d feature-new-feature

2. 冲突解决

处理合并冲突的艺术:

  • Git 会在冲突标记的文件中插入 <<< >>> 标记
  • 手动编辑文件以解决冲突
  • 使用图形工具:git difftool 或 IDE 集成
  • 解决后重新添加和提交

第三章:高级 Git 操作

1. 重置与恢复

# 软重置 - 保持暂存区不变,移动 HEAD
git reset --soft HEAD~1

# 硬重置 - 丢弃暂存区和工作区的变更
git reset --hard HEAD~1

# mixed重置 (默认) - 重置暂存区,保持工作区
git reset --mixed HEAD~1  # 或简化为 git reset HEAD~1

2. 撤销操作

# 取消暂存的文件
git restore --staged filename.txt  # 或 git reset HEAD filename.txt

# 撤销工作区的修改 (恢复到最后一次提交的状态)
git restore filename.txt  # 或 git checkout -- filename.txt

# 通过新提交撤销之前的提交
git revert HEAD  # 创建一个相反变更的新提交

第四章:远程仓库协作

1. 远程仓库基本操作

# 添加远程仓库
git remote add origin https://github.com/username/repo.git

# 查看远程仓库
git remote -v

# 推送到远程
git push -u origin main  # 第一次推送设置上游
git push  # 后续推送

# 拉取远程更新
git pull origin main

# 拉取但不合并 (用于检查)
git fetch origin

2. 分支推送与跟踪

# 推送特定分支
git push origin feature-branch

# 建立上游跟踪分支
git push -u origin feature-branch

# 查看分支与远程的关系
git branch -vv

第五章:Git钩子

1. 钩子类型

# 客户端钩子 (在本地执行)
pre-commit      # 在提交前运行
pre-push        # 在推送前运行

# 服务器端钩子 (在服务器上执行)
receive-push    # 在接受推送后运行
pre-receive     # 在接受推送前运行

2. 常用钩子示例

# .git/hooks/pre-commit - 在提交前检查代码格式
#!/bin/bash
# 检查是否有 TODO 评论
if git diff --cached | grep -i "TODO"; then
    echo "警告:提交中包含 TODO 评论"
    exit 1
fi

# 运行格式化工具
npx prettier --write .
git add .
exit 0

第六章:工作流最佳实践

1. Gitflow 工作流

适合有固定发布周期的项目:

  • 主分支:main (生产环境)
  • 开发分支:develop (开发环境)
  • 功能分支:feature/* (功能开发)
  • 发布分支:release/* (发布准备)
  • 热修复分支:hotfix/* (紧急修复)

2. GitHub Flow

适合持续部署的项目:

  • 始终有一个部署可用的 main 分支
  • 创建功能分支进行开发
  • 提交拉取请求进行代码审查
  • 合并到 main 前通过 CI/CD 测试

3. 分支命名规范

# 功能分支
feature/user-login
feature/payment-integration

# 修复分支
bugfix/header-crash
hotfix/security-patch

# release 分支
release/v1.2.0

# hotfix 分支
hotfix/critical-bug

总结

从入门到精通 Git 的路径包括:

  1. 掌握基础命令和工作流
  2. 理解分支、合并和冲突解决
  3. 学习高级操作和撤销技术
  4. 实践远程协作和工作流模型
  5. 探索钩子和自动化

记住,Git 不仅仅是一个版本控制工具,它是团队协作的基础设施。掌握良好的 Git 习惯可以避免无数问题,并使团队协作更加顺畅。从今天开始审视你的 Git 使用习惯,应用本指南的原则,让版本控制为你的工作增效。

最重要的原则:提交信息要清晰、有意义;频繁提交;始终在安全分支上操作重要工作。