侧边栏壁纸
  • 累计撰写 96 篇文章
  • 累计创建 18 个标签
  • 累计收到 23 条评论

目 录CONTENT

文章目录

Git 常用操作命令大全

Administrator
2026-09-11 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

Git 常用操作命令大全

Git 是一个分布式版本控制系统。中文完整文档:https://git-scm.com/book/zh/v2


目录

  1. 配置
  2. 创建与克隆
  3. 日常提交
  4. 查看状态与历史
  5. 分支管理
  6. 远程仓库
  7. 撤销与回退
  8. 暂存区(Stash)
  9. 合并与变基
  10. 标签(Tag)
  11. 常用高阶技巧

1. 配置

# 设置全局用户名和邮箱(提交时必填)
git config --global user.name "你的名字"
git config --global user.email "you@example.com"

# 仅在当前仓库设置(不加 --global)
git config user.name "你的名字"

# 查看配置
git config --list              # 查看所有配置
git config --global --list     # 查看全局配置
git config user.name           # 查看单项配置

# 设置默认文本编辑器(用于写提交信息)
git config --global core.editor "vim"

# 设置默认分支名(新版 Git)
git config --global init.defaultBranch main

2. 创建与克隆

# 在当前目录初始化一个新仓库
git init

# 克隆远程仓库到本地
git clone <仓库地址>
git clone git@github.com:user/repo.git      # SSH 方式
git clone https://github.com/user/repo.git  # HTTPS 方式

# 克隆到指定目录
git clone <地址> myfolder

# 只克隆某个分支
git clone -b <分支名> <地址>

3. 日常提交

# 查看文件状态(哪些修改了/新增了)
git status

# 添加文件到暂存区
git add <文件名>               # 添加单个文件
git add .                      # 添加当前目录所有改动
git add src/                   # 添加某个目录
git add -A                     # 添加所有改动(含删除)

# 提交暂存区内容到本地仓库
git commit -m "提交说明"
git commit -am "提交说明"      # 跳过 git add,直接提交已跟踪文件的修改

# 修改上一次提交(未推送时)
git commit --amend -m "新的提交说明"

# 查看暂存区里具体改了哪些内容
git diff --cached

4. 查看状态与历史

# 查看工作区差异(未暂存的修改)
git diff

# 查看提交历史
git log
git log --oneline              # 简洁版(一行一条)
git log --oneline -10          # 只看最近10条
git log --graph --oneline      # 图形化显示分支

# 查看某次提交的具体改动
git show <commit_id>
git show --stat <commit_id>    # 只显示改动的文件统计

# 查看某个文件的历史
git log -- <文件名>
git log -p -- <文件名>         # 带每次改动内容

# 查看某行代码是谁/哪次提交改的
git blame <文件名>

5. 分支管理

# 查看分支
git branch                     # 本地分支
git branch -a                  # 所有分支(含远程)
git branch -v                  # 带最后提交信息

# 创建/切换分支
git branch <新分支名>          # 创建分支(不切换)
git checkout <分支名>          # 切换到已有分支
git checkout -b <新分支名>     # 创建并切换(常用)
git switch <分支名>            # 新版切换分支
git switch -c <新分支名>       # 新版创建并切换

# 重命名分支(需先切换到该分支)
git branch -m <新名字>

# 删除分支
git branch -d <分支名>         # 安全删除(未合并会提示)
git branch -D <分支名>         # 强制删除

6. 远程仓库

# 查看远程仓库
git remote -v                  # 列出远程地址

# 添加远程仓库
git remote add origin <地址>

# 推送本地分支到远程
git push origin <分支名>
git push -u origin <分支名>    # 首次推送并建立关联(之后可直接 git push)
git push                       # 关联后直接推送当前分支

# 拉取远程更新并合并
git pull                       # 等于 fetch + merge
git pull origin <分支名>

# 拉取远程最新但先不合并
git fetch

# 删除远程分支
git push origin --delete <分支名>

7. 撤销与回退

# 撤销工作区修改(未暂存、未提交)—— 危险,丢失修改
git restore <文件名>
git checkout -- <文件名>       # 旧版写法

# 把已暂存的文件移出暂存区(不加 --hard,不丢内容)
git restore --staged <文件名>
git reset <文件名>             # 旧版写法

# 撤销最近一次提交(保留修改,回到暂存区)
git reset --soft HEAD~1

# 撤销最近一次提交(保留修改,回到工作区)
git reset HEAD~1               # 或 --mixed
git reset HEAD~1 -- <文件名>

# 彻底回退并丢弃修改(危险!)
git reset --hard HEAD          # 回到当前最新提交,丢弃所有未提交改动
git reset --hard <commit_id>   # 回退到指定提交,丢弃之后的所有修改

# 用一次新提交推翻之前某次提交(适合已推送的情况)
git revert <commit_id>

# 暂存区/工作区全部清理
git clean -fd                  # 删除未跟踪的文件和目录(危险)

8. 暂存区(Stash)

把当前未提交的修改临时保存,之后可恢复:

git stash                      # 暂存当前修改
git stash list                 # 查看暂存列表
git stash apply                # 恢复但不删除暂存记录
git stash pop                  # 恢复并删除暂存记录
git stash drop stash@{0}       # 删除某条暂存
git stash clear                # 清空所有暂存
git stash save "说明"          # 带备注暂存

9. 合并与变基

# 合并(merge):把某分支合并到当前分支
# 先切换到目标分支,再执行
git checkout main
git merge feature

# 变基(rebase):把当前分支的提交重新放到另一分支基础上
git rebase main                # 把当前分支基于 main 重放

# 处理冲突后继续/中止
git add <冲突文件>             # 解决冲突后添加
git merge --continue           # 继续合并(会打开编辑器确认)
git rebase --continue          # 继续变基
git merge --abort              # 放弃合并,恢复原状
git rebase --abort             # 放弃变基

merge vs rebase:merge 保留完整历史(有分叉记录),rebase 让历史更干净(线性)。团队协作通常用 merge,个人/功能分支常用 rebase。


10. 标签(Tag)

# 打标签(如发布 v1.0)
git tag v1.0                   # 简单标签
git tag -a v1.0 -m "说明"      # 带注释的标签(推荐)

# 查看标签
git tag
git tag -l "v1.*"              # 通配符筛选

# 推送标签到远程
git push origin v1.0
git push --tags                # 推送所有标签

# 删除标签
git tag -d v1.0                # 本地删除
git push origin --delete v1.0  # 远程删除

11. 常用高阶技巧

# 查看仓库整体信息 / 图形化历史
gitk --all                          # GUI 图形化
git log --graph --oneline --all     # 终端图形化

# 搜索历史中的关键字(如某次提交删了某功能)
git log -S "关键词" --oneline
git grep "关键词" $(git rev-list --all)   # 全历史搜索(慢)

# 找回被删除/误删的提交(还是能找回的)
git reflog                          # 查看操作日志,找回 commit_id
git reset --hard <commit_id>        # 找回后回退

# 一次提交多个文件中的部分内容
git add -p                        # 交互式选择暂存

# 查看某文件某个历史版本的完整内容
git show <commit_id>:<文件路径>

# 子模块
git submodule add <地址> <目录>
git submodule update --init --recursive

# 生成补丁文件
git diff > changes.patch
git apply changes.patch

# 常用别名(提高效率)
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.lg "log --oneline --graph --all"
# 之后可用 git lg / git co 等

⚠️ 常见陷阱提醒

情况 正确做法
git pull 报冲突 先 git stash 暂存本地修改,pull 后再 git stash pop
刚 commit 就想改 git commit --amend(未推送时)
误提交到 main git reset --soft HEAD~1 撤销提交但保留改动
误删了文件还没提交 git restore -- <文件> 从 HEAD 恢复
已经 push 了错误提交 千万别用 reset,用 git revert 新提交推翻
不确定哪些改动 先 git status + git diff,确认后再 add/commit

最常用 5 条(足以应对 80% 场景)

git status                    # 看状态
git add . && git commit -m "说明"   # 提交
git push                      # 推送
git pull                      # 拉取
git log --oneline             # 看历史

整理:Hermes Agent · 供日常参考,详细用法请查阅 Git 官方文档

0

评论区