Git 是一个分布式版本控制系统,用于高效管理项目代码的变更历史。以下是 Git 的核心使用指南,涵盖常用命令和工作流程:
一、基础配置
# 设置用户名和邮箱(提交时显示作者信息)
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
# 查看配置
git config --list
二、仓库操作
操作 | 命令 |
---|---|
初始化新仓库 | git init |
克隆远程仓库 | git clone https://github.com/user/repo.git |
查看当前状态 | git status |
添加文件到暂存区 | git add <file> 或 git add . |
提交更改 | git commit -m "提交说明" |
查看提交历史 | git log (加 --oneline 简化输出) |
三、分支管理
操作 | 命令 |
---|---|
创建分支 | git branch <branch-name> |
切换分支 | git checkout <branch-name> |
创建并切换分支 | git checkout -b <branch-name> |
合并分支到当前分支 | git merge <branch-name> |
删除分支 | git branch -d <branch-name> |
查看所有分支 | git branch -a |
四、远程仓库操作
操作 | 命令 |
---|---|
添加远程仓库 | git remote add origin <远程仓库URL> |
推送到远程分支 | git push -u origin <branch-name> |
拉取远程更新 | git pull origin <branch-name> |
查看远程仓库 | git remote -v |
从远程克隆特定分支 | git clone -b <branch-name> <仓库URL> |
五、撤销与回退
场景 | 命令 |
---|---|
撤销工作区修改 | git checkout -- <file> |
撤销暂存区的文件 | git reset HEAD <file> |
回退到某个提交 | git reset --hard <commit-id> |
修改最后一次提交 | git commit --amend |
六、标签管理
# 创建标签
git tag v1.0.0
# 推送标签到远程
git push origin --tags
# 删除标签
git tag -d v1.0.0
七、高级技巧
储藏临时改动
git stash # 临时保存工作区 git stash pop # 恢复最近储藏的内容
查看差异
git diff # 工作区 vs 暂存区 git diff --staged # 暂存区 vs 最新提交
忽略文件
创建.gitignore
文件,列出需忽略的文件/目录(如logs/
、.env
)。
八、典型工作流程
# 1. 获取最新代码
git pull origin main
# 2. 创建新分支开发
git checkout -b feature-new
# 3. 修改文件后提交
git add .
git commit -m "添加新功能"
# 4. 推送到远程
git push origin feature-new
# 5. 在GitHub/GitLab创建Pull Request(合并请求)
九、常见问题解决
合并冲突
- 冲突文件会显示
<<<<<<<
和>>>>>>>
标记 - 手动修改后执行:
git add <冲突文件> git commit -m "解决冲突"
- 冲突文件会显示
误删分支恢复
git reflog # 查找分支最后的commit-id git checkout -b <branch> <commit-id>
学习资源
- 官方文档:git-scm.com/doc
- 交互式教程:Learn Git Branching
- 图形化工具:GitHub Desktop、Sourcetree、VS Code Git 插件
掌握这些命令后,可覆盖 90% 的日常开发需求。实践时建议结合图形化工具(如 VS Code 的 Git 面板)辅助操作。
以下是一个完整的 Git 使用实例案例,结合所有核心命令,模拟真实开发场景:
项目案例:开发简单的待办事项应用
# 场景说明
用户 "Alice" 在 GitHub 创建了空仓库 `todo-app`
开发者 "Bob" 需要完成以下任务:
1. 初始化本地项目
2. 开发基础功能
3. 修复紧急 bug
4. 发布版本
5. 与团队协作
完整操作流程(含所有命令)
阶段 1: 初始化和基础配置
# 全局配置
git config --global user.name "Bob Developer"
git config --global user.email "bob@company.com"
# 克隆远程仓库
git clone https://github.com/alice/todo-app.git
cd todo-app
# 初始化项目
echo "# TODO App" > README.md
echo "*.log" > .gitignore
mkdir src
touch src/app.js
阶段 2: 基础开发流程
# 查看状态
git status # 显示未跟踪文件
# 添加并提交
git add .gitignore README.md src/
git commit -m "初始化项目结构"
# 创建功能分支
git checkout -b feature/add-ui
# 开发UI功能 (模拟)
echo "function renderUI() { /* UI代码 */ }" >> src/app.js
# 提交更改
git add src/app.js
git commit -m "添加UI渲染功能"
# 切换回主分支
git checkout main
阶段 3: 修复紧急 Bug
# 从主分支创建热修复分支
git checkout -b hotfix/login-bug
# 修复bug (模拟)
echo "function fixLogin() { /* 修复登录bug */ }" >> src/app.js
# 提交修复
git add src/app.js
git commit -m "紧急修复登录问题"
# 合并到主分支
git checkout main
git merge hotfix/login-bug
# 删除临时分支
git branch -d hotfix/login-bug
阶段 4: 版本发布
# 合并功能分支
git merge feature/add-ui
# 解决冲突 (若有)
# [手动解决冲突后...]
git add src/app.js
git commit -m "合并UI功能"
# 创建版本标签
git tag v1.0.0 -m "首个稳定版本"
# 推送到远程
git push origin main
git push origin --tags
阶段 5: 团队协作
# 获取同事的更新
git pull origin main
# 创建新功能分支
git checkout -b feature/dark-mode
# 开发新功能 (模拟)
echo "function enableDarkMode() { /* 深色模式 */ }" >> src/app.js
# 临时储藏更改
git stash save "WIP: 深色模式开发"
# 切换回主分支处理紧急任务
git checkout main
# [处理紧急任务...]
# 恢复储藏内容
git checkout feature/dark-mode
git stash pop
# 完成功能开发
git add src/app.js
git commit -m "添加深色模式支持"
git push origin feature/dark-mode
# 在GitHub创建Pull Request
阶段 6: 撤销和版本管理
# 意外修改了文件
echo "错误内容" > README.md
# 撤销工作区修改
git checkout -- README.md
# 错误提交后的修正
echo "新功能" > src/new-feature.js
git add src/new-feature.js
git commit -m "添加新功能"
# 发现提交信息错误
git commit --amend -m "添加重要新功能"
# 版本回退 (如果需要)
git log --oneline # 查看提交历史
git reset --hard HEAD~1 # 回退到上一个提交
完整工作流示意图
[本地] [远程]
1. git clone (GitHub仓库)
↓
2. 开发功能 (feature分支)
↓
3. git add/commit
↓
4. git pull origin main ──────────────────→ 获取更新
↓
5. 解决冲突 (如有)
↓
6. git push origin feature ───────────────→ 推送分支
↓
7. 创建Pull Request → 代码审查
↓
8. git checkout main
↓
9. git merge feature
↓
10. git tag v1.x.x
↓
11. git push origin main --tags ──────────→ 发布版本
关键命令总结表
类别 | 命令 | 使用场景 |
---|---|---|
配置 | git config --global user.name |
设置用户名 |
克隆 | git clone <url> |
获取远程仓库 |
分支 | git checkout -b <branch> |
创建并切换分支 |
提交 | git commit -am "msg" |
添加并提交所有修改 |
撤销 | git restore <file> |
丢弃工作区修改 (Git 2.23+) |
合并 | git merge --no-ff <branch> |
保留分支历史的合并 |
推送 | git push -u origin <branch> |
首次推送分支并建立跟踪 |
拉取 | git pull --rebase |
变基方式获取更新 |
储藏 | git stash pop |
恢复最近储藏的更改 |
标签 | git tag -a v1.0 -m "msg" |
创建带注释的标签 |
日志 | git log --graph --oneline |
图形化查看历史 |
这个案例覆盖了日常开发中 90% 的 Git 使用场景,包括:
- 个人开发流程(提交、分支、合并)
- 团队协作(推送、拉取、解决冲突)
- 紧急修复(热修复分支)
- 版本管理(标签)
- 错误处理(撤销、修改提交)
- 多任务处理(储藏)
实际使用时,建议配合 VS Code 的 Git 图形界面操作,复杂操作(如 rebase)可在命令行执行。