Git 快速入门
Git 是现代软件开发必备的版本控制工具。本文从基础概念讲起,覆盖日常开发中最常用的命令和协作流程。
发布于 2026年4月22日·3891 字·预计阅读 16 分钟
什么是 Git
Git 是一个分布式版本控制系统,用于跟踪文件的变更历史。它解决的核心问题是:代码改坏了能回退,多人协作不冲突。
三个核心概念:
| 概念 | 说明 |
|---|---|
| 工作区(Working Directory) | 你正在编辑的文件 |
| 暂存区(Staging Area) | 下一次提交要包含的变更 |
| 仓库(Repository) | 提交历史,即 .git 目录 |
初始配置
bash
# 设置用户名和邮箱(会记录在每次提交中)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# 设置默认分支名为 main
git config --global init.defaultBranch main
# 设置默认编辑器
git config --global core.editor "vim"
创建和克隆仓库
bash
# 在当前目录初始化仓库
git init
# 克隆远程仓库
git clone https://github.com/user/repo.git
# 克隆到指定目录
git clone https://github.com/user/repo.git my-project
日常工作流
查看状态
bash
git status
显示哪些文件被修改、哪些在暂存区、哪些未跟踪。
添加变更到暂存区
bash
# 添加单个文件
git add README.md
# 添加所有变更
git add .
# 交互式添加(选择部分变更)
git add -p
提交
bash
# 提交暂存区的变更
git commit -m "feat: 添加用户登录功能"
# 跳过暂存区,直接提交所有已跟踪文件的修改
git commit -am "fix: 修复首页样式"
# 修改上一次提交(不要对已推送的提交这样做)
git commit --amend
提交信息规范:
type: 描述,常见 type:feat(新功能)、fix(修复)、docs(文档)、refactor(重构)、chore(杂项)。
查看历史
bash
# 简洁日志
git log --oneline
# 查看某个文件的修改历史
git log --oneline -- path/to/file
# 查看差异
git diff # 工作区 vs 暂存区
git diff --staged # 暂存区 vs 最近提交
git diff HEAD~1 # 最近两次提交的差异
分支
分支是 Git 最强大的功能——每个功能、每次修复都可以在独立分支上开发,互不影响。
bash
# 查看分支
git branch
# 创建并切换到新分支
git checkout -b feature/login
# 或新写法
git switch -c feature/login
# 切换分支
git switch main
# 合并分支(在 main 分支上执行)
git switch main
git merge feature/login
# 删除已合并的分支
git branch -d feature/login
远程操作
bash
# 查看远程仓库
git remote -v
# 添加远程仓库
git remote add origin https://github.com/user/repo.git
# 推送到远程
git push origin main
# 首次推送并设置上游分支
git push -u origin main
# 拉取远程更新
git pull
# 获取远程更新(不合并,手动处理)
git fetch
撤销操作
| 场景 | 命令 |
|---|---|
| 撤销工作区修改(未 add) | git checkout -- file 或 git restore file |
| 取消暂存(已 add,未 commit) | git restore --staged file |
| 撤销最近一次提交(保留修改) | git reset --soft HEAD~1 |
| 撤销最近一次提交(丢弃修改) | git reset --hard HEAD~1 |
| 撤销最近一次提交(安全方式) | git revert HEAD(生成新的撤销提交) |
重要:
git reset --hard会丢失修改,且不可恢复。对已推送到远程的提交,用git revert而不是git reset。
储藏(Stash)
开发到一半需要切换分支,但当前修改还不想提交:
bash
# 保存当前修改
git stash
# 查看 stash 列表
git stash list
# 恢复最近的 stash
git stash pop
# 恢复指定 stash
git stash pop stash@{0}
# 删除所有 stash
git stash clear
实战:团队协作流程
bash
# 1. 克隆仓库
git clone https://github.com/team/project.git
cd project
# 2. 创建功能分支
git switch -c feature/user-profile
# 3. 开发、提交
git add .
git commit -m "feat: 添加用户个人资料页"
# 4. 拉取最新代码并合并
git fetch origin
git rebase origin/main
# 5. 推送到远程
git push origin feature/user-profile
# 6. 在 GitHub 上创建 Pull Request
# 7. 代码审查通过后,合并并删除分支
git switch main
git pull
git branch -d feature/user-profile
速查表
text
配置:
git config --global user.name "Name"
git config --global user.email "email"
基础:
git init 初始化仓库
git clone URL 克隆远程仓库
git status 查看状态
git add . 暂存所有变更
git commit -m "msg" 提交
git log --oneline 查看历史
git diff 查看差异
分支:
git branch 查看分支
git switch -c name 创建并切换
git switch name 切换分支
git merge branch 合并分支
远程:
git push origin main 推送
git pull 拉取
git fetch 获取(不合并)
撤销:
git restore file 撤销工作区修改
git restore --staged file 取消暂存
git reset --soft HEAD~1 撤销提交(保留修改)
git revert HEAD 安全撤销提交
临时:
git stash 储藏修改
git stash pop 恢复储藏