从零开始学 Git,掌握 init、clone、add、commit、status、branch 等核心命令,快速上手版本控制。
Git 是目前最流行的分布式版本控制系统,几乎所有现代开发项目都离不开它。无论你是独立开发者还是团队协作成员,Git 都是必备技能。
本文带你从零开始,掌握 Git 最核心的基础命令。
一、
什么是 Git?
Git 是一个分布式版本控制系统,由 Linux 之父 Linus Torvalds 于 2005 年创建,最初是为管理 Linux 内核源代码而设计。
与集中式版本控制(如 SVN)不同,Git 每个开发者本地都有完整的仓库副本,包括全部历史记录。
核心优势:
- 离线工作:不需要网络连接也能提交代码
- 分支灵活:创建和切换分支几乎是瞬间完成
- 数据完整:每次提交都有 SHA-1 哈希校验
- 协作高效:支持多人并行开发,合并冲突清晰
二、
查看 Git 版本
安装 Git 后,第一件事是确认版本:
输出示例:
1
| git version 2.47.1.windows.2
|
提示
如果提示命令不存在,说明 Git 未安装或未加入环境变量。Windows 用户可从 git-scm.com 下载安装。
三、
初始化仓库:git init
git init 用于在当前目录创建一个新的 Git 仓库。
1 2 3 4 5
| cd my-project
git init
|
执行后会在当前目录下创建一个隐藏的 .git 文件夹:
1 2 3 4 5 6 7 8
| my-project/ ├── .git/ ← Git 仓库的核心,存储所有版本数据 │ ├── HEAD ← 指向当前分支的引用 │ ├── config ← 本仓库的配置 │ ├── objects/ ← 存储数据对象(提交、文件快照等) │ └── refs/ ← 存储分支和标签引用 ├── src/ └── README.md
|
注意:不要手动修改 .git 目录中的文件,这可能导致仓库损坏。所有操作都应通过 Git 命令完成。
设置默认分支名
Git 默认创建的分支名是 master,现在社区普遍推荐使用 main:
1 2 3 4 5 6
| git config --global init.defaultBranch main
git init git branch -m master main
|
补充
git branch -m 是分支重命名命令,-m 表示 move(移动/重命名)。
四、
克隆仓库:git clone
git clone 用于从远程仓库(如 GitHub、Gitee)复制一份完整的项目到本地:
1 2 3 4 5
| git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git
|
clone 做了什么?
1 2 3 4 5 6
| 远程仓库 (GitHub) 本地仓库 ┌──────────────┐ ┌──────────────┐ │ 所有分支 │ ────→ │ 所有分支 │ │ 所有标签 │ 完整复制 │ 所有标签 │ │ 全部历史 │ │ 全部历史 │ └──────────────┘ └──────────────┘
|
关键点:clone 会下载完整的仓库历史,而不仅仅是最新代码。这意味着即使断网,你也能查看任意历史版本。
克隆到指定目录
1 2 3 4 5
| git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git my-folder
|
浅克隆(只拉最新提交)
1 2
| git clone --depth 1 https://github.com/user/repo.git
|
注意
浅克隆适用于只需要最新代码的场景(如部署),但无法查看完整历史和切换分支。
五、
日常工作流:add → commit
这是 Git 最核心的操作流程,每次修改代码都要经历:
1 2 3 4 5
| 修改文件 ──→ git add ──→ git commit ──→ 提交到历史 │ │ │ ▼ ▼ ▼ 工作区 暂存区 仓库历史 (Working) (Staging) (Repository)
|
5.1 查看状态:git status
输出会用颜色标注文件状态:
1 2 3 4 5 6 7 8 9 10
| On branch main
Changes not staged for commit: ← 红色:修改了但没 add modified: src/main.js
Changes to be committed: ← 绿色:已经 add,等待 commit new file: src/utils.js
Untracked files: ← 红色:新文件,Git 还不认识 README.md
|
小技巧:用 git status -s 查看简洁版状态,输出更紧凑:
1 2 3
| M src/main.js ← 空格M:工作区修改,未暂存 A src/utils.js ← A:已暂存的新文件 ?? README.md ← ??:未跟踪的文件
|
5.2 暂存文件:git add
1 2 3 4 5 6 7 8
| git add src/main.js
git add file1.js file2.js file3.js
git add .
|
慎用 git add .:它会把所有修改(包括不该提交的文件如 .env、密钥文件)都加入暂存区。建议用 git add 指定文件,或确保 .gitignore 已正确配置。
5.3 提交更改:git commit
1 2 3 4 5
| git commit -m "feat: 添加用户登录功能"
git commit
|
5.4 提交信息规范
好的提交信息应该清晰说明这次修改做了什么:
1 2 3 4 5 6 7
| feat: 添加用户注册接口 fix: 修复登录时密码验证错误 docs: 更新 API 文档中的参数说明 style: 统一代码缩进为 2 空格 refactor: 重构用户模块的数据层 test: 添加用户注册接口的单元测试 chore: 升级 webpack 到 v5.0
|
1 2 3 4
| update ← 改了什么? 修改代码 ← 太模糊 111 ← 无意义 fix bug ← 哪个 bug?
|
六、
分支基础:git branch
分支是 Git 最强大的功能之一,允许你在不影响主线的情况下开发新功能。
查看分支
1 2 3 4 5 6 7 8
| git branch
git branch -a
git branch -v
|
输出示例:
1 2 3
| develop * main ← * 表示当前所在分支 feature/login
|
创建分支
1 2 3 4 5 6 7 8
| git branch feature/login
git checkout -b feature/login
git switch -c feature/login
|
切换分支
1 2
| git checkout main git switch main
|
重命名分支
1 2 3 4 5
| git branch -m main
git branch -m old-name new-name
|
删除分支
1 2 3 4 5
| git branch -d feature/login
git branch -D feature/login
|
分支命名建议:
feature/xxx — 新功能fix/xxx — 修 Bughotfix/xxx — 紧急修复docs/xxx — 文档更新refactor/xxx — 重构
七、
远程操作:push 与 pull
本地开发完成后,需要把代码推送到远程仓库与团队共享。
7.1 关联远程仓库
1 2 3 4 5
| git remote -v
git remote add origin https://github.com/user/repo.git
|
7.2 推送代码:git push
1 2 3 4 5
| git push origin main
git push -u origin main
|
7.3 拉取代码:git pull
1 2 3 4 5
| git pull
git pull --rebase
|
最佳实践:建议全局开启 pull.rebase,避免产生大量无意义的 “Merge remote-tracking branch” 提交:
1
| git config --global pull.rebase true
|
八、
查看历史:git log
1 2 3 4 5 6 7 8 9 10 11
| git log
git log --oneline
git log --oneline --graph --all
git log -p src/main.js
|
简洁输出示例:
1 2 3
| a1b2c3d (HEAD -> main) feat: 添加登录功能 e4f5g6h fix: 修复首页样式问题 i7j8k9l docs: 更新 README
|
总结:Git 基础命令速查表
| 命令 | 作用 | 常用参数 |
|---|
git init | 初始化仓库 | — |
git clone <url> | 克隆远程仓库 | --depth 1 浅克隆 |
git status | 查看文件状态 | -s 简洁模式 |
git add <file> | 暂存文件 | . 暂存所有 |
git commit -m "msg" | 提交更改 | --amend 修改上一次提交 |
git branch | 查看/管理分支 | -m 重命名、-d 删除 |
git checkout <branch> | 切换分支 | -b 创建并切换 |
git switch <branch> | 切换分支(新语法) | -c 创建并切换 |
git push | 推送到远程 | -u 设置上游 |
git pull | 拉取远程更新 | --rebase 使用变基 |
git log | 查看提交历史 | --oneline 简洁模式 |
git --version | 查看 Git 版本 | — |