Source Control Learning Lab

学会 Git,写出更好的历史。

面向协作开发者的 Git 文档站,覆盖快速上手、常见工作流、风险操作恢复,以及 rebase、merge、reflog 等核心命令的实战说明。

命令 · 工作流 · 原理图解 + 练习 + 恢复双语教程体系

内容频道

15当前已接入的教程频道
命令专题70
教程总数224

Recommended path

Quick Start → fetch/pull → rebase → reflog

Quick Start

快速开始

先用几个低风险命令建立对分支、提交和同步的直觉。

01 / setup

初始化仓库

了解 git init、git clone、身份配置和默认分支。

git clone repo-url
02 / stage

暂存与提交

理解工作区、暂存区和提交历史的三层关系。

git add . && git commit
03 / sync

同步远端

掌握 fetch、pull、push 与本地分支的协同方式。

git fetch origin

Start Here

先选一种进入方式

有些读者带着目标来,有些读者带着问题来。把两种入口合成一个更紧凑的导航舱。

按目标进入

03个入口

如果你想顺着一条学习路径往前走,从目标出发会更稳。

01

Git 新手入口

从 clone、add、commit、fetch、pull、push 建立最小闭环。

02

团队协作入口

先理解 fetch、pull、review 前同步和共享历史边界。

03

排障恢复入口

误操作、历史写乱、想撤回时,先从 reflog 和恢复手册开始。

Changelog

最新更新

这里优先展示最近补入或扩写的教材入口,方便快速跟进新增内容。

Reference

命令参考路线

把高频命令整理成渐进式学习路径。

基于 Git 官方文档与官方书中的高频问题整理出一组上手最常见的答疑。

`git pull` 会先执行 fetch,再把上游分支整合进当前分支。官方文档说明它可以走 `--ff-only`、`--rebase`、`--no-rebase` 或 `--squash` 等不同路径,所以结果取决于你的命令参数和 `pull.rebase`、`pull.ff` 等配置。想减少意外,最稳妥的习惯仍然是先 fetch,再明确决定是 merge 还是 rebase。

官方手册把区别讲得很明确:`--soft` 只移动 HEAD,保留暂存区和工作区;`--mixed` 会把暂存区重置到目标提交,但保留工作区改动;`--hard` 会同时改写 HEAD、暂存区和工作区。也就是说,真正危险的是 `--hard`,因为它会直接覆盖当前文件状态。

很多时候可以。Git 官方在 `git reset` 文档里专门说明了 `ORIG_HEAD` 和 reflog 的用途:reset、merge、pull 这类操作通常会留下可回溯的引用。只要对象还没被垃圾回收清理掉,通常都能先通过 reflog 找到原来的提交,再决定是新建分支还是回退引用。