Git 核心命令中文文档

本文档整理了 Git 最常用的核心命令、使用场景和关键参数,覆盖从仓库初始化到分支管理、提交推送、版本回滚等全流程,适合新手快速上手和日常查阅。

一、Git 基础概念

  • 工作区:本地修改代码的目录(可见的文件目录)。
  • 暂存区(Index):临时存储待提交的修改(.git/index),是工作区和版本库的中间层。
  • 版本库(Repository):Git 存储版本信息的目录(.git 文件夹)。
  • 分支(Branch):独立的开发线,默认主分支为 main/master
  • 提交(Commit):将暂存区的修改保存到版本库,生成唯一的提交 ID。
  • 远程仓库(Remote):托管在网络上的 Git 仓库(如 GitHub/Gitee/GitLab)。

二、基础配置命令

1. 全局配置(首次使用必做)

作用:设置 Git 用户名和邮箱(关联提交记录)。

# 设置用户名
git config --global user.name "你的用户名"

# 设置邮箱(建议与代码仓库账号一致)
git config --global user.email "你的邮箱@xxx.com"

# 查看全局配置
git config --global --list

# 设置默认编辑器(如 VS Code)
git config --global core.editor "code --wait"

# 设置默认分支名称(如 main)
git config --global init.defaultBranch main

2. 本地配置(仅当前仓库生效)

# 进入仓库目录后配置
git config user.name "当前仓库专属用户名"
git config user.email "当前仓库专属邮箱"

# 查看当前仓库配置
git config --list

三、仓库初始化与克隆

1. 初始化本地仓库

作用:将本地空目录转为 Git 仓库。

# 进入目标目录
cd /path/to/your/project

# 初始化仓库
git init

# 初始化后会生成 .git 隐藏目录(核心版本库)

2. 克隆远程仓库

作用:将远程仓库完整复制到本地(最常用的初始化方式)。

# HTTPS 方式(需输入账号密码/令牌)
git clone https://github.com/用户名/仓库名.git

# SSH 方式(需配置 SSH 密钥,免密登录)
git clone git@github.com:用户名/仓库名.git

# 克隆到指定目录
git clone https://github.com/用户名/仓库名.git 自定义目录名

# 克隆指定分支
git clone -b 分支名 https://github.com/用户名/仓库名.git

四、日常开发核心命令(工作区/暂存区/版本库)

1. 查看状态

作用:查看工作区、暂存区的修改状态(最常用命令之一)。

# 查看详细状态(哪些文件修改/新增/删除)
git status

# 简化输出(仅显示文件名)
git status -s

2. 添加修改到暂存区

作用:将工作区的修改(新增/修改/删除)加入暂存区,为提交做准备。

# 添加指定文件到暂存区
git add 文件名1 文件名2

# 添加当前目录所有修改到暂存区
git add .

# 添加所有修改(包括删除的文件)
git add -A

# 交互式添加(选择部分修改)
git add -i

3. 提交修改到版本库

作用:将暂存区的修改保存到版本库,生成提交记录。

# 提交暂存区修改,需输入提交说明(会打开编辑器)
git commit

# 提交并直接填写说明(推荐,简洁高效)
git commit -m "提交说明:如 修复登录按钮样式问题"

# 跳过暂存区,直接提交工作区已跟踪的文件(慎用)
git commit -am "提交说明"

# 修改最后一次提交(未推送到远程时使用)
git commit --amend -m "修正后的提交说明"

4. 查看提交历史

作用:查看版本库的提交记录,定位修改。

# 查看所有提交记录(按时间倒序)
git log

# 简化输出(一行显示一条提交)
git log --oneline

# 显示最近 N 条提交
git log -n 5

# 显示提交记录 + 文件修改详情
git log -p

# 显示分支合并图(可视化分支历史)
git log --graph --oneline --all

# 查看指定文件的提交历史
git log -- 文件名

五、分支管理(核心重点)

1. 查看分支

# 查看本地分支(* 标记当前分支)
git branch

# 查看所有分支(本地 + 远程)
git branch -a

# 查看分支最后一次提交
git branch -v

2. 创建分支

# 创建新分支(仅创建,不切换)
git branch 新分支名

# 创建并切换到新分支(最常用)
git checkout -b 新分支名

# 基于指定提交 ID 创建分支
git checkout -b 新分支名 提交ID

# 基于远程分支创建本地分支
git checkout -b 本地分支名 origin/远程分支名

3. 切换分支

# 切换到已有分支
git checkout 分支名

# 切换到上一个分支
git checkout -

# 新版 Git 推荐用法(更直观)
git switch 分支名

# 切换到指定提交(进入分离头指针状态,临时查看历史版本)
git checkout 提交ID

4. 合并分支

作用:将其他分支的修改合并到当前分支(如开发分支合并到主分支)。

# 先切换到目标分支(如 main)
git checkout main

# 合并指定分支(如 dev)到当前分支
git merge dev

# 合并时生成合并提交(记录合并操作,推荐)
git merge --no-ff dev -m "合并dev分支:完成xx功能开发"

# 解决合并冲突后,继续合并
git add 冲突文件
git commit -m "解决合并冲突:xx文件"

5. 删除分支

# 删除本地分支(需先切换到其他分支)
git branch -d 分支名

# 强制删除未合并的分支(慎用)
git branch -D 分支名

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

6. 重命名分支

# 重命名本地分支
git branch -m 旧分支名 新分支名

# 推送重命名后的分支到远程
git push origin 新分支名

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

六、远程仓库交互命令

1. 关联远程仓库

作用:本地仓库首次关联远程仓库时使用。

# 添加远程仓库(命名为 origin,默认别名)
git remote add origin https://github.com/用户名/仓库名.git

# 查看已关联的远程仓库
git remote -v

# 修改远程仓库地址
git remote set-url origin 新的仓库地址

# 删除远程仓库关联
git remote remove origin

2. 拉取远程代码

作用:将远程仓库的最新代码同步到本地。

# 拉取远程指定分支并合并到当前分支(最常用)
git pull origin 分支名

# 仅拉取不合并(先查看差异,再手动合并)
git fetch origin 分支名

# 拉取所有远程分支
git fetch --all

3. 推送本地代码到远程

作用:将本地提交推送到远程仓库。

# 首次推送分支(需关联远程分支)
git push -u origin 分支名

# 非首次推送(已关联)
git push origin 分支名

# 强制推送(覆盖远程分支,慎用!仅本地修正历史后使用)
git push -f origin 分支名

# 推送所有本地分支到远程
git push --all origin

七、版本回滚与撤销操作

1. 撤销工作区修改(未添加到暂存区)

# 撤销指定文件的工作区修改(恢复到最近一次提交状态)
git checkout -- 文件名

# 撤销所有工作区未暂存的修改
git restore .

2. 撤销暂存区修改(已 add 未 commit)

# 将暂存区的指定文件退回工作区
git reset HEAD 文件名

# 新版 Git 推荐
git restore --staged 文件名

# 撤销暂存区所有修改
git reset HEAD .

3. 回滚已提交的版本(已 commit 未 push)

# 回滚到上一个版本,保留工作区修改(可重新提交)
git reset --soft HEAD^

# 回滚到上一个版本,清空暂存区,保留工作区修改
git reset --mixed HEAD^  # 默认模式,可省略 --mixed

# 强制回滚到上一个版本,清空工作区+暂存区(慎用!丢失未提交修改)
git reset --hard HEAD^

# 回滚到指定提交 ID(需确认提交 ID,可通过 git log 查看)
git reset --hard 提交ID

4. 回滚已推送到远程的版本(慎用)

# 本地回滚到指定版本
git reset --hard 提交ID

# 强制推送到远程(覆盖远程历史,团队协作时需通知所有人)
git push -f origin 分支名

5. 恢复已删除的提交(误回滚后)

# 查看所有操作记录(包括回滚的提交)
git reflog

# 恢复到指定操作记录的版本
git reset --hard 操作记录ID

八、其他常用命令

1. 忽略文件(.gitignore)

作用:指定 Git 无需跟踪的文件/目录(如日志、依赖包、编译文件)。

# 在仓库根目录创建 .gitignore 文件
touch .gitignore

# 编辑 .gitignore(示例内容)
cat >> .gitignore << EOF
# 忽略所有 .log 文件
*.log

# 忽略 node_modules 目录
node_modules/

# 忽略 IDE 配置文件
.idea/
.vscode/

# 忽略构建产物
dist/
build/
EOF

# 若已跟踪的文件需加入忽略,先移除跟踪(保留本地文件)
git rm --cached 已跟踪的忽略文件

2. 查看差异

# 查看工作区与暂存区的差异
git diff

# 查看暂存区与版本库的差异
git diff --cached

# 查看两个提交之间的差异
git diff 提交ID1 提交ID2

# 查看两个分支之间的差异
git diff 分支名1 分支名2

3. 标签管理(Tag)

作用:标记重要版本(如发布版本 v1.0.0)。

# 创建轻量标签(仅标记,无说明)
git tag v1.0.0

# 创建附注标签(推荐,带说明)
git tag -a v1.0.0 -m "版本 v1.0.0:首次发布"

# 查看所有标签
git tag

# 推送标签到远程
git push origin v1.0.0

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

# 删除本地标签
git tag -d v1.0.0

# 删除远程标签
git push origin --delete tag v1.0.0

4. 暂存工作区(Stash)

作用:临时保存工作区未提交的修改,切换分支时不丢失进度。

# 暂存当前工作区修改(生成暂存记录)
git stash

# 暂存并添加说明
git stash save "暂存说明:未完成的登录功能"

# 查看所有暂存记录
git stash list

# 恢复最近一次暂存(保留暂存记录)
git stash apply

# 恢复最近一次暂存并删除暂存记录(常用)
git stash pop

# 恢复指定暂存记录
git stash apply stash@{0}

# 删除指定暂存记录
git stash drop stash@{0}

# 删除所有暂存记录
git stash clear

九、团队协作常用流程

  1. 拉取最新主分支代码
    git checkout main
    git pull origin main
  2. 创建功能分支
    git checkout -b feature/登录功能
  3. 开发并提交代码
    git add .
    git commit -m "完成登录页面布局"
  4. 推送功能分支到远程
    git push -u origin feature/登录功能
  5. 合并到主分支(可选)
    git checkout main
    git merge feature/登录功能
    git push origin main
  6. 删除本地功能分支
    git branch -d feature/登录功能

十、常见问题解决

1. 合并冲突

  • 冲突文件会标记 <<<<<<< HEAD(当前分支)、=======(合并分支)、>>>>>>> 分支名
  • 手动编辑冲突文件,保留需要的代码,删除冲突标记;
  • 执行 git add 冲突文件git commit -m "解决合并冲突" 完成合并。

2. 忘记提交就切换分支

  • 使用 git stash 暂存修改 → 切换分支 → 完成操作后切回 → git stash pop 恢复。

3. 提交信息写错(未推送)

  • 执行 git commit --amend -m "正确的提交说明" 修正。

总结

  1. Git 核心流程:git clone/initgit addgit commitgit push/pull
  2. 分支管理核心:git checkout -b(创建分支)→ 开发 → git merge(合并)→ git branch -d(删除);
  3. 版本回滚核心:git reset --hard(本地)、git reflog(恢复误删提交);
  4. 团队协作关键:先拉取最新代码,再创建分支开发,避免直接修改主分支。

如需查看命令详情,执行 git 命令 --help(如 git commit --help),或访问 Git 官方文档