【Git】Git 系统性使用指南(内含《核心Git命令速查表》)

简介: 这是一份全面、实用的Git系统性指南,涵盖基础配置、日常操作、分支管理、远程协作、撤销回退、标签与高级命令(如rebase、cherry-pick、bisect等),附带速查表、规范建议和最佳实践,适合开发者日常参考、团队协作及面试复习。

Git 系统性使用指南

Git 是分布式版本控制系统,用于高效管理项目代码。本文从基础到高级,全方位总结 Git 核心概念、命令与最佳实践。

《Git 命令速查表》

核心说明

此表格为Git全场景常用命令速查,覆盖基础配置、日常操作、分支管理、远程协作、撤销回退、高级操作全维度,适配Git新版规范,兼顾旧版兼容命令,可直接用于日常开发、面试复习、团队规范参考。


分类 核心命令 功能说明 常用示例代码
基础配置与仓库初始化 git config 配置Git全局/局部用户信息、编辑器、别名等核心参数 git config --global user.name "你的名称"
git config --global user.email "你的邮箱"
git config --list(查看所有配置)
git init 初始化一个全新的本地Git仓库 git init 项目名称(新建文件夹并初始化)
git init(当前目录直接初始化)
git clone 克隆远程仓库到本地,自动关联远程源 git clone https://github.com/用户名/仓库名.git
git clone -b 分支名 仓库地址(克隆指定分支)
日常核心操作 git status 查看工作区、暂存区的文件状态(新增/修改/删除/未跟踪) git status
git status -s(精简一行输出)
git add 将工作区的修改/新增文件添加到暂存区 git add 文件名(添加单个文件)
git add .(添加当前目录所有变更)
git add 目录名/(添加指定目录)
git commit 将暂存区的内容提交到本地版本库,生成永久提交记录 git commit -m "提交说明"
git commit -am "提交说明"(跳过add,直接提交已跟踪文件)
git commit --amend(修改最近一次提交信息)
git diff 查看不同区域间的代码差异 git diff(工作区 vs 暂存区)
git diff --staged(暂存区 vs 版本库,同--cached)
git diff HEAD(工作区 vs 最新版本)
git log 查看分支提交历史记录 git log
git log --oneline(一行精简展示)
git log --graph --all --oneline(图形化展示全部分支历史)
分支管理 git branch 分支的创建、查看、删除、重命名 git branch(查看本地分支)
git branch -a(查看本地+远程全部分支)
git branch 新分支名(创建分支)
git branch -d 分支名(删除已合并分支)
git branch -D 分支名(强制删除未合并分支)
git checkout / git switch 切换分支,或创建并切换分支(switch为Git 2.23+新版推荐命令) git checkout 分支名 / git switch 分支名(切换分支)
git checkout -b 新分支名 / git switch -c 新分支名(创建并切换分支)
git merge 将目标分支的提交合并到当前分支 git merge 待合并分支名
git merge --no-ff 待合并分支名(禁用快进合并,保留合并记录)
远程仓库协作 git remote 管理本地仓库关联的远程仓库源 git remote -v(查看已关联的远程源)
git remote add origin 远程仓库地址(添加远程源,origin为默认别名)
git remote set-url origin 新地址(修改远程源地址)
git push 将本地分支的提交推送到远程仓库 git push origin 分支名
git push -u origin 分支名(首次推送并关联远程分支,后续可直接git push)
git push origin --delete 远程分支名(删除远程分支)
git pull 拉取远程分支的最新提交,并合并到当前本地分支(fetch + merge) git pull origin 分支名
git pull --rebase origin 分支名(拉取后用变基替代合并,保持提交线整洁)
git fetch 抓取远程仓库的所有更新,但不自动合并到本地分支 git fetch origin
git fetch --all(抓取所有远程源的更新)
撤销与回退操作 git restore 撤销工作区/暂存区的修改(Git 2.23+ 新版推荐命令) git restore 文件名(撤销工作区修改,恢复到暂存区状态)
git restore --staged 文件名(撤销暂存区的add操作,保留工作区修改)
git reset 回退提交记录,可控制修改的保留范围,分为3种核心模式 git reset --soft HEAD~1(仅撤销提交,修改保留在暂存区)
git reset --mixed HEAD~1(默认模式,撤销提交+暂存区,修改保留在工作区)
git reset --hard HEAD~1(彻底回退,丢弃所有修改,高危慎用!)
git revert 反转指定提交,生成新的提交记录,不修改历史,安全用于公共分支 git revert HEAD(反转最近一次提交)
git revert 提交哈希值(反转指定历史提交)
git reflog 查看本地仓库所有HEAD操作记录,用于找回误删/误回退的提交 git reflog
git reset --hard HEAD@{序号}(恢复到指定操作节点)
git stash 临时暂存工作区未完成的修改,用于切换分支前保存现场 git stash push -m "暂存说明"
git stash list(查看所有暂存记录)
git stash apply stash@{0}(应用指定暂存,不删除)
git stash pop(应用最近一次暂存并删除)
git stash drop stash@{0}(删除指定暂存)
标签管理 git tag 版本标签创建、查看、删除,用于版本发布标记 git tag 标签名(创建轻量标签)
git tag -a 标签名 -m "标签说明"(创建附注标签,推荐用于版本发布)
git tag(查看所有标签)
git show 标签名(查看标签详情)
git tag -d 标签名(删除本地标签)
git push 标签相关 标签的远程推送与删除 git push origin 标签名(推送单个标签到远程)
git push origin --tags(推送所有本地标签到远程)
git push origin --delete 标签名(删除远程标签)
高级进阶操作 git cherry-pick 选择性将指定分支的单个/多个提交,合并到当前分支 git cherry-pick 提交哈希值
git cherry-pick 提交哈希1 提交哈希2(合并多个提交)
git rebase 变基操作,将当前分支的提交移到目标分支的最新提交之上,保持提交历史线性整洁 git rebase 目标分支名
git rebase -i HEAD~n(交互式变基,可合并/修改/删除历史提交)
git bisect 二分法查找引入Bug的提交,快速定位问题 git bisect start(启动查找)
git bisect bad(标记当前提交有Bug)
git bisect good 正常版本号/提交哈希(标记已知正常的版本)
git bisect reset(查找完成后退出)
git blame 逐行查看文件的修改历史,包括修改人、提交时间、提交哈希 git blame 文件名
git submodule 子模块管理,在主仓库中嵌套管理其他Git仓库 git submodule add 子模块仓库地址 存放路径(添加子模块)
git clone --recursive 主仓库地址(克隆含子模块的仓库)
git submodule update --init --recursive(更新并初始化所有子模块)

补充使用规范

  1. 命令中 HEAD~1 代表最近1次提交,可替换为 HEAD~n 代表最近n次提交,也可直接替换为指定的提交哈希值
  2. 所有带 --global 的配置为全局生效,不加则仅对当前仓库生效
  3. git rebase 禁止在多人协作的公共分支上使用,仅可用于个人本地分支
  4. git reset --hard 为高危操作,执行前请确认已备份重要修改
  5. 提交信息推荐遵循 Conventional Commits 规范,格式为 type: 描述(如 fix: 修复登录接口超时feat: 新增用户管理模块

一、Git 基础

1. 安装与配置

# 安装(以 Ubuntu 为例)
sudo apt install git

# 配置用户信息(全局)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 查看配置
git config --list

2. 初始化仓库

# 新建仓库
git init my-project
cd my-project

# 或克隆现有仓库
git clone https://github.com/username/repository.git

3. 核心概念:工作区、暂存区、版本库

  • 工作区:本地文件目录
  • 暂存区:临时保存待提交的修改(git add 后)
  • 版本库:Git 仓库的核心(.git 目录)

4. 基础操作

(1)查看状态

git status

(2)添加文件到暂存区

# 添加单个文件
git add file.txt

# 添加所有文件
git add .

# 添加指定目录
git add src/

(3)提交到版本库

# 提交暂存区文件
git commit -m "提交说明"

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

(4)查看差异

# 工作区 vs 暂存区
git diff

# 暂存区 vs 版本库
git diff --staged  # 或 git diff --cached

# 工作区 vs 版本库
git diff HEAD

(5)查看提交日志

# 查看完整日志
git log

# 简洁日志(一行显示)
git log --oneline

# 图形化显示分支历史
git log --graph --all --oneline

二、分支管理

1. 分支基础操作

(1)创建分支

git branch dev  # 创建名为 dev 的分支

(2)切换分支

git checkout dev  # 切换到 dev 分支
# 或使用新版命令
git switch dev

(3)创建并切换分支

git checkout -b dev  # 创建 dev 并切换
# 或
git switch -c dev

(4)查看分支

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

2. 合并分支

(1)普通合并

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

# 合并 dev 分支到 master
git merge dev

(2)解决合并冲突

当合并冲突时,Git 会标记冲突文件。手动编辑文件后:

git add conflict-file.txt  # 标记冲突已解决
git commit -m "解决合并冲突"

3. 删除分支

# 删除已合并的分支
git branch -d dev

# 强制删除未合并的分支
git branch -D dev

三、远程仓库操作

1. 关联远程仓库

# 查看远程仓库
git remote -v

# 添加远程仓库(origin 为默认名称)
git remote add origin https://github.com/username/repo.git

# 修改远程仓库 URL
git remote set-url origin https://github.com/username/new-repo.git

2. 推送与拉取

(1)推送本地分支到远程

git push origin master  # 推送 master 分支
git push -u origin master  # 首次推送并关联(后续可直接 git push)

(2)拉取远程更新

# 抓取远程更新但不合并
git fetch origin

# 拉取并合并(fetch + merge)
git pull origin master

3. 远程分支管理

# 查看远程分支
git branch -r

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

四、撤销与回退

1. 撤销工作区修改

git checkout -- file.txt  # 丢弃工作区修改(恢复到暂存区状态)
# 或新版命令
git restore file.txt

2. 撤销暂存区修改

git reset HEAD file.txt  # 从暂存区移除(保留工作区修改)
# 或新版命令
git restore --staged file.txt

3. 撤销提交(git reset)

git reset 有三种模式,通过 --soft/--mixed/--hard 区分:

模式 作用
--soft 仅撤销提交,修改保留在暂存区
--mixed 默认模式,撤销提交和暂存区,修改保留在工作区
--hard 彻底撤销,丢弃所有修改(慎用!)
# 示例:撤销最近 1 次提交
git reset --soft HEAD~1   # 保留修改在暂存区
git reset --mixed HEAD~1  # 保留修改在工作区(默认)
git reset --hard HEAD~1   # 彻底丢弃修改

4. 反转提交(git revert)

创建新提交来撤销历史提交(不修改历史,适合公共分支):

git revert HEAD  # 撤销最近一次提交
git revert commit-hash  # 撤销指定提交

5. 查看操作历史(git reflog)

记录所有 HEAD 移动(可用于恢复误删的提交):

git reflog  # 查看操作历史
git reset --hard HEAD@{
   n}  # 恢复到指定操作

五、标签管理

1. 创建标签

# 轻量标签(仅指向提交)
git tag v1.0

# 附注标签(包含标签信息)
git tag -a v1.0 -m "版本 1.0 发布"

2. 查看标签

git tag  # 查看所有标签
git show v1.0  # 查看标签详情

3. 推送标签到远程

git push origin v1.0  # 推送单个标签
git push origin --tags  # 推送所有标签

4. 删除标签

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

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

六、高级操作

1. 暂存工作区(git stash)

临时保存未完成的修改(用于切换分支前):

# 暂存工作区
git stash save "临时保存的修改"

# 查看暂存列表
git stash list

# 应用暂存(不删除)
git stash apply stash@{
   0}

# 应用并删除暂存
git stash pop

# 删除暂存
git stash drop stash@{
   0}

2. 选择性合并提交(git cherry-pick)

将某个分支的特定提交合并到当前分支:

git cherry-pick commit-hash

3. 变基(git rebase)

将当前分支的提交“移动”到目标分支的最新提交之上(使历史更清晰):

# 在 dev 分支上,将 dev 的提交基于 master 最新
git checkout dev
git rebase master

⚠️ 注意:不要对公共分支使用 rebase(会修改历史)!

4. 二分查找 Bug(git bisect)

通过二分法快速定位引入 Bug 的提交:

git bisect start  # 开始查找
git bisect bad    # 标记当前提交为有 Bug
git bisect good v1.0  # 标记 v1.0 为正常
# Git 自动切换到中间提交,测试后标记 good/bad,直到找到 Bug 提交
git bisect reset  # 退出查找

5. 查看文件修改历史(git blame)

逐行查看文件的修改者和时间:

git blame file.txt

6. 子模块(git submodule)

在一个 Git 仓库中嵌套另一个仓库:

# 添加子模块
git submodule add https://github.com/username/submodule.git path/to/submodule

# 克隆包含子模块的仓库
git clone --recursive https://github.com/username/repo.git

# 更新子模块
git submodule update --init --recursive

7. Git 别名配置

简化常用命令:

git config --global alias.co checkout  # git co = git checkout
git config --global alias.br branch    # git br = git branch
git config --global alias.ci commit    # git ci = git commit
git config --global alias.st status    # git st = git status

七、最佳实践

  1. 提交粒度:每次提交聚焦一个功能/修复,避免大而全的提交。
  2. 提交说明:使用清晰的描述(如 fix: 修复登录接口超时)。
  3. 分支策略:采用 Git Flow 或 GitHub Flow 等分支管理模型。
  4. 避免强制推送:除非是个人分支,否则不要使用 git push --force

八、更多资源

相关文章
|
8天前
|
人工智能 安全 Linux
【OpenClaw保姆级图文教程】阿里云/本地部署集成模型Ollama/Qwen3.5/百炼 API 步骤流程及避坑指南
2026年,AI代理工具的部署逻辑已从“单一云端依赖”转向“云端+本地双轨模式”。OpenClaw(曾用名Clawdbot)作为开源AI代理框架,既支持对接阿里云百炼等云端免费API,也能通过Ollama部署本地大模型,完美解决两类核心需求:一是担心云端API泄露核心数据的隐私安全诉求;二是频繁调用导致token消耗过高的成本控制需求。
5179 9
|
16天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
21120 114
|
7天前
|
JavaScript Linux API
保姆级教程,通过GACCode在国内使用Claudecode、Codex!
保姆级教程,通过GACCode在国内使用Claudecode、Codex!
4676 1
保姆级教程,通过GACCode在国内使用Claudecode、Codex!
|
12天前
|
人工智能 安全 前端开发
Team 版 OpenClaw:HiClaw 开源,5 分钟完成本地安装
HiClaw 基于 OpenClaw、Higress AI Gateway、Element IM 客户端+Tuwunel IM 服务器(均基于 Matrix 实时通信协议)、MinIO 共享文件系统打造。
8067 7
|
14天前
|
人工智能 JavaScript API
保姆级教程:OpenClaw阿里云/本地部署配置Tavily Search skill 实时联网,让OpenClaw“睁眼看世界”
默认状态下的OpenClaw如同“闭门造车”的隐士,仅能依赖模型训练数据回答问题,无法获取实时新闻、最新数据或训练截止日期后的新信息。2026年,激活其联网能力的最优方案是配置Tavily Search技能——无需科学上网、无需信用卡验证,每月1000次免费搜索额度完全满足个人需求,搭配ClawHub技能市场,还能一键拓展天气查询、邮件管理等实用功能。
8112 5

热门文章

最新文章