前言

DeepSeek 老师生成的 Git 笔记,根据实际使用修改和补充。

🔍 Git 是什么?

Git 是一个分布式版本控制系统,由 Linus Torvalds(Linux 内核的创建者)于 2005 年开发。Git 让开发者能够跟踪代码变化、协作开发,并在需要时恢复到之前的版本。

📊 Git 工作流

graph LR
    WD["工作区<br/>Working Directory"] 
    SA["暂存区<br/>Staging Area"] 
    LR["本地仓库<br/>Local Repository"]
    RR["远程仓库<br/>Remote Repository"]
    
    WD -->|git add| SA
    SA -->|git commit| LR
    LR -->|git push| RR
    RR -->|git pull| WD
    RR -->|git fetch| LR
    LR -->|git checkout| WD

🌿 分支管理图解

gitGraph
    commit
    commit
    branch feature
    checkout feature
    commit
    commit
    checkout main
    merge feature
    commit
    branch hotfix
    checkout hotfix
    commit
    checkout main
    merge hotfix
    commit

📂 仓库操作

初始化仓库

1
git init

克隆远程仓库

1
git clone https://github.com/username/repo.git

📦 提交管理

添加文件到暂存区

1
2
git add .              # 添加所有文件
git add main.py # 添加指定文件

提交更改

1
git commit -m "提交说明"

查看状态

1
git status

查看提交历史

1
2
git log               # 完整历史
git log --oneline # 简洁版历史

⏪ 版本控制

撤销工作区修改

1
git checkout -- main.py

版本回退

1
2
git reset --hard abc123     # 彻底回退到指定提交
git checkout abc123 # 临时查看历史版本

警告reset --hard 会丢失未提交的更改!


🌿 分支管理

创建分支

1
2
git branch feature      # 创建分支
git checkout -b feature # 创建并切换

切换分支

1
git checkout main

合并分支

1
2
git checkout main
git merge feature

删除分支

1
git branch -d feature

☁️ 远程协作

关联远程仓库

1
git remote add origin https://github.com/username/repo.git

查看远程仓库

1
git remote -v

推送代码

1
git push -u origin main

拉取更新

1
git pull origin main

🔍 差异比较

1
2
3
git diff           # 工作区 vs 暂存区
git diff --cached # 暂存区 vs 最新提交
git diff HEAD # 工作区 vs 最新提交

⚙️ 配置相关

用户配置

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

行尾符配置

1
2
3
git config --global core.autocrlf true   # Windows
git config --global core.autocrlf input # Linux/macOS
git config --global core.autocrlf false # 禁用

🙈 忽略文件

在项目根目录创建 .gitignore 文件:

1
2
3
4
5
6
7
8
9
10
11
# 忽略所有编译文件
*.class
*.exe

# 忽略依赖目录
node_modules/
vendor/

# 忽略系统文件
.DS_Store
Thumbs.db

💡 使用技巧

  • 使用 git commit -am "消息" 可跳过暂存直接提交已跟踪文件
  • git reflog 可查看所有操作历史(包括被 reset 的提交)
  • 使用 git fetch + git merge 代替 git pull 更安全

🔄 常见工作流程

基本工作流

graph TB
 拉取最新代码[git pull]
 创建分支[git chechout -b feature-x]
 修改提交[git add. & git commit -m 'feature: xxx']
 推送分支[git push origin feature-x]
 
 拉取最新代码-->创建分支-->修改提交
 修改提交-->推送分支
  1. 拉取最新代码:git pull origin main
  2. 创建功能分支:git checkout -b feature-x
  3. 修改代码并提交:git add .git commit -m "实现功能 X"
  4. 推送分支:git push origin feature-x
  5. 合并到主分支:在 GitHub/GitLab 创建 Pull Request

紧急修复流程

  1. 切换到主分支:git checkout main
  2. 创建修复分支:git checkout -b hotfix-123
  3. 修复问题并提交:git commit -am "修复问题 #123"
  4. 推送修复:git push origin hotfix-123
  5. 合并修复:通过 Pull Request 合并到主分支

📘 Git 深入概念

Git 对象类型

  • Blob:文件内容
  • Tree:目录结构
  • Commit:完整的提交信息
  • Tag:标记特定提交的标签

引用类型

  • HEAD:当前工作位置
  • 分支:指向特定提交的可移动指针
  • 远程引用:远程仓库分支的本地引用

🛡️ 最佳实践

  • 频繁提交,保持提交粒度小
  • 编写清晰、描述性的提交消息
  • 定期拉取远程更新,避免大型合并冲突
  • 使用分支进行功能开发和实验
  • 使用 .gitignore 排除不必要的文件