Git 命令使用教程目录
- [Git 命令使用教程](#Git 命令使用教程)
-
- [一、Git 基础配置](#一、Git 基础配置)
-
- [1.1 用户信息配置](#1.1 用户信息配置)
- [1.2 常用全局配置](#1.2 常用全局配置)
- 二、仓库操作
-
- [2.1 创建和克隆仓库](#2.1 创建和克隆仓库)
- [2.2 添加远程仓库](#2.2 添加远程仓库)
- 三、文件操作
-
- [3.1 添加和提交文件](#3.1 添加和提交文件)
- [3.2 查看差异](#3.2 查看差异)
- 四、分支管理
-
- [4.1 分支操作](#4.1 分支操作)
- [4.2 合并和变基](#4.2 合并和变基)
- 五、提交历史
-
- [5.1 查看历史](#5.1 查看历史)
- [5.2 撤销操作](#5.2 撤销操作)
- 六、远程操作
-
- [6.1 推送和拉取](#6.1 推送和拉取)
- [6.2 同步远程分支](#6.2 同步远程分支)
- 七、暂存和储藏
-
- 八、标签管理
-
- 九、高级技巧
-
- [9.1 清理和优化](#9.1 清理和优化)
- [9.2 二分查找](#9.2 二分查找)
- [9.3 子模块](#9.3 子模块)
- 十、常用工作流示例
-
- [10.1 日常开发流程](#10.1 日常开发流程)
- [10.2 修复bug流程](#10.2 修复bug流程)
- [十一、Git 命令速查表](#十一、Git 命令速查表)
-
- 常用命令组合
- [常用别名配置(添加到 ~/.gitconfig)](#常用别名配置(添加到 ~/.gitconfig))
- 注意事项
Git 命令使用教程
一、Git 基础配置
1.1 用户信息配置
bash
复制代码
# 设置用户名
git config --global user.name "你的名字"
# 设置邮箱
git config --global user.email "你的邮箱"
# 查看所有配置
git config --list
# 查看特定配置
git config user.name
git config user.email
1.2 常用全局配置
bash
复制代码
# 设置默认编辑器为 VSCode
git config --global core.editor "code --wait"
# 设置默认合并工具
git config --global merge.tool vscode
# 设置命令行颜色显示
git config --global color.ui auto
# 设置别名(快捷命令)
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.co checkout
git config --global alias.lg "log --oneline --graph --all"
二、仓库操作
2.1 创建和克隆仓库
bash
复制代码
# 初始化本地仓库
git init
git init 项目名 # 创建目录并初始化
# 克隆远程仓库
git clone https://github.com/用户名/仓库名.git
git clone https://github.com/用户名/仓库名.git 自定义目录名
git clone --depth=1 https://github.com/用户名/仓库名.git # 浅克隆(只克隆最新版本)
# 查看远程仓库信息
git remote -v
git remote show origin
2.2 添加远程仓库
bash
复制代码
# 添加远程仓库
git remote add origin https://github.com/用户名/仓库名.git
# 修改远程仓库地址
git remote set-url origin https://github.com/用户名/新仓库名.git
# 删除远程仓库
git remote remove origin
# 重命名远程仓库
git remote rename origin new-origin
三、文件操作
3.1 添加和提交文件
bash
复制代码
# 添加文件到暂存区
git add 文件名 # 添加单个文件
git add . # 添加所有文件
git add *.js # 添加所有js文件
git add src/ # 添加整个目录
git add -A # 添加所有文件(包括删除的)
git add -u # 只添加已跟踪的文件
# 查看状态
git status
git status -s # 简洁模式
# 提交更改
git commit -m "提交说明"
git commit -m "标题" -m "详细描述" # 多行提交信息
# 一次性添加和提交
git commit -am "提交说明" # 只能提交已跟踪的文件
# 修改最后一次提交
git commit --amend -m "新的提交信息"
git commit --amend --no-edit # 只修改文件,不修改提交信息
3.2 查看差异
bash
复制代码
# 查看工作区和暂存区的差异
git diff
# 查看暂存区和仓库的差异
git diff --staged
git diff --cached
# 查看两次提交之间的差异
git diff commit1 commit2
git diff HEAD~1 HEAD
# 查看特定文件的差异
git diff 文件名
git diff HEAD~1 HEAD 文件名
四、分支管理
4.1 分支操作
bash
复制代码
# 查看分支
git branch # 查看本地分支
git branch -a # 查看所有分支(包括远程)
git branch -v # 查看分支详情
git branch --merged # 查看已合并的分支
git branch --no-merged # 查看未合并的分支
# 创建分支
git branch 分支名 # 创建分支
git branch 分支名 commit-id # 从指定提交创建分支
git checkout -b 分支名 # 创建并切换到分支
git switch -c 分支名 # Git 2.23+ 创建并切换
# 切换分支
git checkout 分支名
git switch 分支名 # Git 2.23+
# 重命名分支
git branch -m 旧分支名 新分支名 # 重命名当前分支
git branch -m 新分支名 # 重命名当前分支
# 删除分支
git branch -d 分支名 # 删除已合并的分支
git branch -D 分支名 # 强制删除分支
4.2 合并和变基
bash
复制代码
# 合并分支
git merge 分支名 # 合并指定分支到当前分支
git merge --no-ff 分支名 # 禁用快进合并
git merge --squash 分支名 # 压缩合并
# 变基
git rebase 分支名 # 将当前分支变基到指定分支
git rebase --continue # 继续变基操作
git rebase --abort # 中止变基操作
git rebase --skip # 跳过当前提交
# 解决冲突后继续
git add .
git rebase --continue
五、提交历史
5.1 查看历史
bash
复制代码
# 基本查看
git log
git log --oneline # 单行显示
git log --graph # 图形化显示
git log --all # 显示所有分支
# 高级查看
git log -p # 显示差异
git log --stat # 显示统计信息
git log --since="2023-01-01"
git log --until="2023-12-31"
git log --author="作者名"
git log --grep="关键词"
git log -S "函数名" # 搜索代码变更
# 组合使用
git log --oneline --graph --all
git log --pretty=format:"%h - %an, %ar : %s"
5.2 撤销操作
bash
复制代码
# 撤销工作区修改
git checkout -- 文件名 # 撤销单个文件修改
git checkout -- . # 撤销所有修改
# 撤销暂存区修改
git reset HEAD 文件名 # 从暂存区移除文件
git reset # 移除所有暂存文件
# 撤销提交
git reset --soft HEAD~1 # 撤销提交,保留修改到暂存区
git reset --mixed HEAD~1 # 撤销提交,保留修改到工作区(默认)
git reset --hard HEAD~1 # 彻底撤销提交和修改
# 创建反向提交
git revert commit-id # 创建新的提交来撤销指定提交
git revert HEAD # 撤销最新提交
六、远程操作
6.1 推送和拉取
bash
复制代码
# 推送分支
git push origin 分支名
git push -u origin 分支名 # 设置上游分支
git push origin --all # 推送所有分支
git push origin --tags # 推送所有标签
# 拉取更新
git pull origin 分支名
git pull --rebase # 使用变基方式拉取
git fetch origin # 只获取不合并
# 强制推送(谨慎使用)
git push origin 分支名 --force
git push origin 分支名 --force-with-lease # 更安全的强制推送
6.2 同步远程分支
bash
复制代码
# 获取远程分支
git fetch origin
git fetch --all
# 创建本地分支跟踪远程分支
git checkout -b 本地分支名 origin/远程分支名
git checkout --track origin/远程分支名
# 删除远程分支
git push origin --delete 分支名
git push origin :分支名 # 旧语法
# 更新远程分支列表
git remote prune origin
git fetch -p # 获取并清理
七、暂存和储藏
7.1 储藏修改
bash
复制代码
# 储藏当前修改
git stash
git stash save "储藏说明"
git stash -u # 包括未跟踪文件
# 查看储藏列表
git stash list
# 应用储藏
git stash apply # 应用最新储藏,不删除
git stash apply stash@{n} # 应用指定储藏
git stash pop # 应用并删除最新储藏
# 删除储藏
git stash drop stash@{n} # 删除指定储藏
git stash clear # 删除所有储藏
# 从储藏创建分支
git stash branch 新分支名 stash@{n}
八、标签管理
8.1 标签操作
bash
复制代码
# 查看标签
git tag
git tag -l "v1.*" # 筛选标签
# 创建标签
git tag 标签名 # 轻量标签
git tag -a 标签名 -m "说明" # 附注标签
git tag 标签名 commit-id # 给历史提交打标签
# 推送标签
git push origin 标签名
git push origin --tags # 推送所有标签
# 删除标签
git tag -d 标签名 # 删除本地标签
git push origin --delete 标签名 # 删除远程标签
git push origin :refs/tags/标签名 # 旧语法
九、高级技巧
9.1 清理和优化
bash
复制代码
# 清理未跟踪文件
git clean -n # 预览将要删除的文件
git clean -f # 删除未跟踪文件
git clean -fd # 删除未跟踪文件和目录
# 优化仓库
git gc # 垃圾回收
git prune # 删除无效对象
# 查看仓库大小
git count-objects -vH
9.2 二分查找
bash
复制代码
# 开始二分查找
git bisect start
# 标记为有问题
git bisect bad
# 标记为正常
git bisect good commit-id
# 结束二分查找
git bisect reset
9.3 子模块
bash
复制代码
# 添加子模块
git submodule add https://github.com/用户名/仓库名.git 路径
# 初始化子模块
git submodule init
git submodule update
# 更新所有子模块
git submodule update --init --recursive
十、常用工作流示例
10.1 日常开发流程
bash
复制代码
# 1. 更新本地仓库
git pull origin main --rebase
# 2. 创建功能分支
git checkout -b feature/新功能
# 3. 开发并提交
git add .
git commit -m "实现新功能"
# 4. 推送分支
git push -u origin feature/新功能
# 5. 创建 Pull Request(在GitHub/GitLab上操作)
# 6. 合并后清理
git checkout main
git pull origin main
git branch -d feature/新功能
10.2 修复bug流程
bash
复制代码
# 1. 从main分支创建hotfix分支
git checkout main
git pull origin main
git checkout -b hotfix/紧急修复
# 2. 修复并提交
git add .
git commit -m "修复紧急问题"
# 3. 合并到main
git checkout main
git merge --no-ff hotfix/紧急修复
git push origin main
# 4. 清理分支
git branch -d hotfix/紧急修复
十一、Git 命令速查表
常用命令组合
bash
复制代码
# 查看状态简洁版
git status -s
# 一行显示提交历史
git log --oneline -10
# 图形化查看所有分支历史
git log --graph --oneline --all
# 优雅的log显示
git log --pretty=format:"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s" --date=short
常用别名配置(添加到 ~/.gitconfig)
ini
复制代码
[alias]
st = status
ci = commit
br = branch
co = checkout
df = diff
lg = log --oneline --graph --all
last = log -1 HEAD
undo = reset --soft HEAD~1
unstage = reset HEAD --
amend = commit --amend
wip = !git add -A && git commit -m \"WIP\"
注意事项
- 谨慎使用
--force,可能会覆盖他人的工作
- 提交前先
pull,避免冲突
- 频繁提交,小步快跑
- 写好提交信息,遵循约定式提交
- 使用分支进行功能开发,保护主分支