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
九、团队协作常用流程
- 拉取最新主分支代码:
git checkout main git pull origin main - 创建功能分支:
git checkout -b feature/登录功能 - 开发并提交代码:
git add . git commit -m "完成登录页面布局" - 推送功能分支到远程:
git push -u origin feature/登录功能 - 合并到主分支(可选):
git checkout main git merge feature/登录功能 git push origin main - 删除本地功能分支:
git branch -d feature/登录功能
十、常见问题解决
1. 合并冲突
- 冲突文件会标记
<<<<<<< HEAD(当前分支)、=======(合并分支)、>>>>>>> 分支名; - 手动编辑冲突文件,保留需要的代码,删除冲突标记;
- 执行
git add 冲突文件→git commit -m "解决合并冲突"完成合并。
2. 忘记提交就切换分支
- 使用
git stash暂存修改 → 切换分支 → 完成操作后切回 →git stash pop恢复。
3. 提交信息写错(未推送)
- 执行
git commit --amend -m "正确的提交说明"修正。
总结
- Git 核心流程:
git clone/init→git add→git commit→git push/pull; - 分支管理核心:
git checkout -b(创建分支)→ 开发 →git merge(合并)→git branch -d(删除); - 版本回滚核心:
git reset --hard(本地)、git reflog(恢复误删提交); - 团队协作关键:先拉取最新代码,再创建分支开发,避免直接修改主分支。
如需查看命令详情,执行 git 命令 --help(如 git commit --help),或访问 Git 官方文档。