1. 项目概述
作为一名在软件开发一线摸爬滚打了十多年的老码农,我几乎每天都要和 Git 打交道。从最初面对 fatal: not a git repository 的茫然,到如今能熟练地用命令行处理各种复杂的版本控制场景,我深知一个清晰、实用的命令清单对开发者有多重要。网上流传的 Git 命令大全很多,但要么过于简略,要么就是简单的罗列,缺少了实际使用中的“为什么”和“踩坑经验”。今天,我就结合自己多年的实战经验,为你整理一份不仅“全”,更要“精”的 Git 常用命令集合。这份清单的目标不是让你死记硬背上百个命令,而是帮你建立起 Git 的核心工作流思维,掌握那些真正高频、关键的命令及其组合用法,让你在 80% 的场景下都能游刃有余。
Git 的核心魅力在于其分布式架构和高效的分支管理,但这也意味着它的命令体系相对复杂。别担心,我们不需要一开始就理解所有细节。记住,日常开发中,你只需要熟练运用其中大约 20 个命令,就能覆盖 90% 以上的需求。剩下的,在需要时知道去哪里查、怎么查就行。这篇文章会围绕 初始化与配置、日常提交、分支管理、远程协作、版本追溯与撤销 这五大核心场景,为你拆解每个命令背后的逻辑、常见用法和那些官方文档里不会写的“坑”。
2. Git 核心概念与工作区解析
在深入命令之前,我们必须先统一“语言”。很多新手觉得 Git 难,往往是因为对几个核心区域的概念模糊不清。你可以把 Git 想象成一个严谨的文书处理流程。
2.1 四大工作区域详解
- 工作区 (Workspace) :就是你电脑里能直接看到的项目文件夹。你在这里新增、修改、删除文件。这些变动在未执行
git add之前,Git 是完全不跟踪的。 - 暂存区 (Staging Area / Index) :这是一个非常关键的概念,可以理解为“预提交区”。当你执行
git add后,文件的变动就从工作区被“拍照”存到了这里。暂存区允许你精心挑选本次要提交的内容,而不是一股脑把所有改动都提交上去。 - 本地仓库 (Local Repository) :执行
git commit后,暂存区的内容就被永久地(在未修改历史前)保存到了本地仓库。每次提交都会生成一个唯一的“快照”(即 commit),并形成一个版本历史链。.git目录就是本地仓库的物理存储位置。 - 远程仓库 (Remote Repository) :位于服务器上的仓库,如 GitHub、GitLab、Gitee 等。用于团队协作和备份。
git push将本地提交推送到这里,git fetch/git pull从这里获取他人的更新。
注意 :很多图形化工具(如 SourceTree, VS Code 内置的 Git)试图隐藏暂存区的概念,但对于理解 Git 原理和进行精细的提交管理,深刻理解暂存区至关重要。
2.2 文件状态生命周期
一个文件在 Git 管理下,其生命周期通常如下: 未跟踪 (Untracked) -> git add -> 已暂存 (Staged) -> git commit -> 已提交 (Committed) -> git push -> 已推送 (Pushed) 。 修改一个已跟踪的文件后,它会变为 已修改 (Modified) 状态,再次 git add 后回到 已暂存 状态。
理解这些状态,是正确使用 git status 和进行各种操作的基础。接下来,我们就从项目初始化开始。
3. 仓库初始化与基础配置
万事开头难,但 Git 的初始化却异常简单。不过,一些初始配置却影响着后续使用的便利性和规范性。
3.1 创建与克隆仓库
# 在当前目录初始化一个新的 Git 仓库,这会创建一个 .git 子目录
git init
# 新建一个目录,并将其初始化为 Git 仓库
git init <project-name>
# 克隆一个远程仓库到本地(最常用的获取项目的方式)
git clone <url>
git clone 实际上自动完成了 git init 、 git remote add 和 git fetch + git checkout 等多个步骤。对于常见的 GitHub 项目,URL 格式通常是 https://github.com/username/repo.git 或 git@github.com:username/repo.git (SSH方式)。
3.2 用户身份与常用配置
Git 需要知道你是谁,这样每次提交才会记录正确的作者信息。配置分为全局(对本机所有仓库生效)和项目级(仅对当前仓库生效)。
# 查看当前所有配置
git config --list
# 编辑 Git 配置文件(全局使用 --global)
git config --global -e



被折叠的 条评论
为什么被折叠?



