← 返回知识宇宙
基础课程·入门

Git 基础教程:10 分钟从零开始掌握版本控制

面向零基础初学者的 Git 实操教程,10 分钟演示 init、add、commit、push、pull 等核心命令,覆盖身份配置、仓库初始化、暂存与提交、历史查看、分支合并、冲突解决、远程 GitHub 推送与克隆及最佳实践。

知识编号23
关系轨道0
学习难度入门
Git版本控制GitHub入门教程命令行
抖音

视频讲解

Git 基础教程:10 分钟从零开始掌握版本控制

面向零基础初学者的实操演示脚本 平台:YouTube|时长:10 分钟|系统:macOS / Linux / Windows


开场 Hook(0:00 – 0:20)

【画面】 黑底白字大字标题 "Git 基础教程 — 10 分钟从零开始",配合键盘敲击音效。镜头快速切到一台干净的 macOS 桌面,Terminal 已经打开,光标闪烁。

【旁白】 Git 是全球数百万开发者每天都在用的版本控制工具。

它能帮你记录代码的每一次修改,让你随时回到任意一个历史版本,也能让你和团队成员安全地协作。

虽然 Git 命令一开始看起来有点吓人,但你只要掌握五个核心命令——init、add、commit、push、pull——就能覆盖 90% 的日常工作。

今天这 10 分钟,我会带你从打开终端开始,一路走到把代码推送到 GitHub。过程中你会看到真实的终端操作、真实的输出、真实的错误以及修复办法。

我们开始吧。


第一章 — 什么是 Git(0:20 – 0:50)

Chapter Intro

【旁白】 在写代码之前,我们先搞清楚 Git 到底解决了什么问题。

想象你在写一份报告。每次改完一版,你就手动另存为 report_v1.docx、report_v2.docx、report_final.docx、report_final_final.docx——很快你自己都不知道哪个是最新的。

Git 就是为这种场景而生的:它给每一次修改打上时间戳,让你随时可以对比、恢复、甚至并行开发多个版本。

Git 是 2005 年由 Linus Torvalds(Linux 之父)为了管理 Linux 内核代码而创建的。它最大的特点是分布式——你的电脑和服务器上都有完整的仓库历史,即使没有网络也能工作。

有一点要分清:Git 是工具,GitHub 是网站。Git 在本地运行,GitHub 在云端托管你的仓库。两者经常一起用,但本质上是两回事。

Demo 1.1 — 用终端模拟「没有 Git」的场景

【画面】 屏幕正中放大的 Terminal,提示符闪烁。

【命令】

mkdir no-git-demo && cd no-git-demo
echo "version 1" > notes.txt
cp notes.txt notes_v2.txt
echo "version 2" >> notes_v2.txt
ls

【输出】

notes.txt      notes_v2.txt

【旁白】 看,我刚才手动复制了一个文件来"保存历史"。这就是没有版本控制时的痛苦。

接下来我们用 Git 重新做一遍,看看区别。


第二章 — 安装与验证 Git(0:50 – 1:40)

Chapter Intro

【旁白】 Git 大概率已经装在你的电脑上了。我们直接验证一下。如果没装,再去 git-scm.com 下载对应系统的安装包,Windows 一直下一步,macOS 用 Homebrew 一行命令就够了。

Demo 2.1 — 验证 Git 是否安装

【画面】 终端全屏,输入命令时光标实时移动。

【命令】

git --version

【输出】

git version 2.45.1

【旁白】 只要看到版本号,就说明 Git 已经装好了。记下你的版本号,新一点的版本都支持我们今天要用的所有命令。

Demo 2.2 — 查看 Git 的帮助系统

【画面】 镜头略微推近终端中央。

【命令】

git help -a

【输出】

Available git commands in '/usr/local/git/bin'
  add              fetch           mv              send-email
  branch           format-patch    notes           shortlog
  checkout         gc              pull            show
  ...

【旁白】 Git 自带非常完整的帮助文档。记不住命令没关系,git help <命令> 永远是你的好朋友。


第三章 — 配置你的身份(1:40 – 2:30)

Chapter Intro

【旁白】 第一次使用 Git,必须先告诉它"你是谁"。每次你提交代码,Git 都会把你的名字和邮箱烙进历史记录,这样团队里的人就知道谁改了哪一行。

这些配置只需要做一次,之后所有项目都会用上。

Demo 3.1 — 配置用户名和邮箱

【画面】 终端光标清晰可见,输入过程被录制成实时打字。

【命令】

git config --global user.name "Alice"
git config --global user.email "alice@example.com"

【输出】

(无输出即成功)

【旁白】 --global 意思是"全局生效",这台电脑上所有 Git 仓库都会用这个身份。

注意:用户名和邮箱不需要提前注册,随便写就行——但邮箱最好和你将来要用的 GitHub 邮箱保持一致。

Demo 3.2 — 确认配置生效

【画面】 终端输出用黄色高亮显示。

【命令】

git config --list | head -n 5

【输出】

user.name=Alice
user.email=alice@example.com
core.editor=vim
core.autocrlf=input
color.ui=auto

【旁白】 配置已经生效。前两行就是我们刚才设置的,后面是 Git 的默认值。

Key Takeaway

Practical Use Case

所有公司项目和开源贡献都依赖 Git 身份来追踪责任归属。

Transition

身份配好了,接下来我们正式开始创建一个仓库。


第四章 — 创建第一个仓库(2:30 – 3:30)

Chapter Intro

【旁白】 Git 仓库(repository)就是一个被 Git 管理的文件夹。在里面发生的所有变更,Git 都会自动追踪。

我们从一个空文件夹开始,把它变成一个 Git 仓库。

Demo 4.1 — 初始化仓库

【画面】 终端命令逐行输入,每行结束时光标跳到下一行。

【命令】

mkdir my-project
cd my-project
git init

【输出】

Initialized empty Git repository in /Users/alice/my-project/.git/

【旁白】 git init 这一行命令在当前目录下创建了一个隐藏的 .git 文件夹。这个文件夹就是 Git 的"大脑"——所有版本历史、分支信息、配置都在里面。

千万不要手动修改 .git 目录里的任何文件,里面的结构是给 Git 自己看的。

Demo 4.2 — 看看仓库结构

【画面】 在终端里执行 ls -la,然后镜头切到访达(Finder)显示同一个目录。

【命令】

ls -la

【输出】

.
..
.git

【旁白】 目录里现在只有一个 .git 文件夹。我们的项目文件都还没有加进来。

Key Takeaway

Transition

仓库建好了,但我们还没有任何文件。接下来我们要给仓库添加第一个文件,并完成第一次提交——这是 Git 工作流最核心的一步。


第五章 — Git 的三个区域(3:30 – 4:00)

Chapter Intro

【旁白】 要理解 Git,必须先理解它的三个区域。

工作目录 是你正在编辑的文件。

暂存区 是你准备打包的文件——相当于一个"购物车",先挑选,再结账。

仓库 是已经保存的历史记录,一旦进去就很难丢失。

工作流是:编辑 → 添加 → 提交。中文翻译过来就是:改代码 → 放进购物车 → 结账保存。

记住这六个字,你已经懂了一半的 Git。


第六章 — 第一次提交(4:00 – 5:20)

Chapter Intro

【旁白】 我们来实战第一次提交。我会创建一个 README 文件,然后把它正式写入 Git 历史。

Demo 6.1 — 创建 README.md

【画面】 终端中输入 cat 创建文件,输出完成后用 VSCode 打开同一个文件。

【命令】

cat > README.md << 'EOF'
# 我的第一个 Git 项目

这是一个用来学习 Git 的演示项目。
EOF
cat README.md

【输出】

# 我的第一个 Git 项目

这是一个用来学习 Git 的演示项目。

【旁白】 文件创建好了。注意 Git 不在乎文件是什么类型——Markdown、Python、Java、图片都行。

Demo 6.2 — 检查当前状态

【画面】 镜头放大终端,红色文字(Untracked files)被红框高亮。

【命令】

git status

【输出】

On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        README.md

【旁白】 Git 告诉我们:README.md 是"Untracked"——还没被追踪。

红色字 = 还没进暂存区。Git 在主动提醒我们:"你改了东西,但还没保存哦。"

Demo 6.3 — 添加到暂存区

【画面】 输入命令后,镜头立刻再运行一次 git status,颜色从红变绿。

【命令】

git add README.md
git status

【输出】

On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md

【旁白】 看,颜色从红色变成了绿色。这表示文件已经被放到暂存区,准备提交。

如果你有多个文件,可以用 git add . 一次性添加当前目录下的所有改动。

Demo 6.4 — 提交到仓库

【画面】 镜头特写 -m 参数和提交信息。

【命令】

git commit -m "Initial commit: add README"

【输出】

[main (root-commit) 8d7f321] Initial commit: add README
 1 file changed, 3 insertions(+)
 create mode 100644 README.md

【旁白】 提交成功!

8d7f321 是这次提交的哈希值——可以理解为这次提交的"身份证号"。1 file changed, 3 insertions(+) 告诉我们这次改了 1 个文件,新增了 3 行。

提交信息要简短、描述清楚、用现在时态。好的例子:"修复登录 bug"、"添加用户列表页"。坏例子:"更新"、"测试"、"改了点东西"。

Key Takeaway

Practical Use Case

每个新功能、每个 bug 修复都应该是一次独立的 commit,方便日后回溯和 code review。

Transition

第一次提交完成了。接下来我们多改几次文件,看看 Git 怎么记录历史。


第七章 — 查看历史记录(5:20 – 6:00)

Chapter Intro

【旁白】 git log 是你最常用来"考古"的命令——它会列出所有提交,按时间倒序。

Demo 7.1 — 提交几次改动

【画面】 镜头稍微加快节奏,连续输入多条命令,每次提交后镜头短暂停顿。

【命令】

echo "## 安装步骤" >> README.md
git add README.md
git commit -m "docs: add installation section"

echo "- 克隆仓库" >> README.md
echo "- 运行 npm install" >> README.md
git add README.md
git commit -m "docs: add clone steps"

sed -i '' 's/克隆/下载/' README.md
git add README.md
git commit -m "docs: fix typo"

【输出】

[main 45ab821] docs: add installation section
[main b8219cd] docs: add clone steps
[main 7c9f012] docs: fix typo

Demo 7.2 — 查看完整历史

【画面】 终端输出滚动展示,提交哈希用黄色显示。

【命令】

git log

【输出】

commit 7c9f0123a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9
Author: Alice <alice@example.com>
Date:   Mon Jul 6 14:23:10 2026 +0800

    docs: fix typo

commit b8219cdef0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5
Author: Alice <alice@example.com>
Date:   Mon Jul 6 14:20:45 2026 +0800

    docs: add clone steps

commit 45ab8219876a5b4c3d2e1f0a9b8c7d6e5f4a3b2c
Author: Alice <alice@example.com>
Date:   Mon Jul 6 14:18:22 2026 +0800

    docs: add installation section

commit 8d7f3210000a1b2c3d4e5f6a7b8c9d0e1f2a3b4
Author: Alice <alice@example.com>
Date:   Mon Jul 6 14:15:01 2026 +0800

    Initial commit: add README

Demo 7.3 — 一行式日志(推荐日常使用)

【画面】 镜头特写 --oneline 参数。

【命令】

git log --oneline

【输出】

7c9f012 docs: fix typo
b8219cd docs: add clone steps
45ab821 docs: add installation section
8d7f321 Initial commit: add README

【旁白】 --oneline 把每个提交压缩成一行——哈希前 7 位加提交信息。这是我每天用得最多的命令,强烈推荐。

Key Takeaway

Transition

现在我们有了一段干净的历史。假设你想试一个新功能,但不想影响主线——这就需要分支了。


第八章 — 分支(6:00 – 7:00)

Chapter Intro

【旁白】 分支(branch)是 Git 最强大的功能。

你可以把分支理解为"平行宇宙"——你在自己的宇宙里随便改代码,不影响主宇宙。等改完了,再把两个宇宙合并。

实际工作中,每个新功能、每个 bug 修复都会开一个新分支。

Demo 8.1 — 查看当前分支

【画面】 终端清晰显示星号标记的当前分支。

【命令】

git branch

【输出】

* main

【旁白】 星号 * 代表"我在这里"。main 是默认主分支,老版本里叫 master。

Demo 8.2 — 创建并切换到新分支

【画面】 镜头跟着命令输入,输出里星号跳到新分支。

【命令】

git checkout -b feature-login
git branch

【输出】

Switched to a new branch 'feature-login'
* feature-login
  main

【旁白】 checkout -b 一步完成"创建 + 切换"。新分支是基于当前分支的完整副本——所以你有所有历史,只是从此以后改的东西都互不干扰。

较新的 Git 版本推荐用 git switch -c feature-login,更直观。

Demo 8.3 — 在新分支上提交改动

【画面】 在 feature-login 分支下修改 README 并提交,镜头实时跟随。

【命令】

echo "## 登录功能" >> README.md
echo "- 支持邮箱登录" >> README.md
git add README.md
git commit -m "feat: add login section"
git log --oneline

【输出】

[feature-login 9f1e2d3] feat: add login section
 1 file changed, 2 insertions(+)
9f1e2d3 feat: add login section
7c9f012 docs: fix typo
b8219cd docs: add clone steps
45ab821 docs: add installation section
8d7f321 Initial commit: add README

【旁白】 看,新提交 9f1e2d3 只存在于 feature-login 分支上。main 分支看不到这次改动。

Key Takeaway

Practical Use Case

永远不要直接在 main 上乱改。

Transition

新功能开发完了,我们要把它合并回 main——这就是下一章的内容。


第九章 — 合并与冲突(7:00 – 8:00)

Chapter Intro

【旁白】 合并(merge)是把分支的改动整合回主线的过程。

最简单的合并是"快进合并"——主分支没动过,直接把指针往前移就行。但如果两个分支都改了同一个文件,就可能产生冲突。

Demo 9.1 — 切回 main 并合并

【画面】 镜头特写 git switch main 和 git merge 的输出。

【命令】

git switch main
git merge feature-login
git log --oneline

【输出】

Switched to branch 'main'
Updating 7c9f012..9f1e2d3
Fast-forward
 README.md | 2 ++
 1 file changed, 2 insertions(+)
9f1e2d3 feat: add login section
7c9f012 docs: fix typo
b8219cd docs: add clone steps
45ab821 docs: add installation section
8d7f321 Initial commit: add README

【旁白】 出现 Fast-forward 表示 main 分支在我们开发期间没有任何新提交,所以 Git 直接把 main 指针往前移了一格。完美合并,零冲突。

Demo 9.2 — 演示冲突场景

【画面】 镜头稍微加快节奏,分别在两个分支修改同一行,然后合并触发冲突。

【命令】

git checkout -b feature-dark-mode
sed -i '' 's/这是一个用来学习 Git 的演示项目/这是一个支持暗色模式的演示项目/' README.md
git add README.md
git commit -m "feat: describe dark mode"

git switch main
sed -i '' 's/这是一个用来学习 Git 的演示项目/这是一个多语言演示项目/' README.md
git add README.md
git commit -m "feat: describe i18n"

git merge feature-dark-mode

【输出】

Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

【旁白】 冲突出现了。Git 不会擅自决定保留哪一版——它需要你来裁决。

Demo 9.3 — 查看并解决冲突

【画面】 镜头特写冲突标记,红色 <<<<<<< HEAD 高亮。

【命令】

cat README.md

【输出】

# 我的第一个 Git 项目

<<<<<<< HEAD
这是一个多语言演示项目
=======
这是一个支持暗色模式的演示项目
>>>>>>> feature-dark-mode

【旁白】 冲突标记长这样:

我们手动决定保留哪个版本,然后删除所有标记符号。

【命令】

# 编辑文件,保留一个版本,例如:
sed -i '' '/<<<<<<< HEAD/,/>>>>>>> feature-dark-mode/d' README.md
echo "这是一个支持暗色模式的多语言演示项目" > temp.md
cat README.md | grep -v "演示项目" > new_readme.md
cat temp.md >> new_readme.md
mv new_readme.md README.md
rm temp.md
git add README.md
git commit -m "merge: resolve conflict between i18n and dark-mode"

【输出】

[main d4e5f6a] merge: resolve conflict between i18n and dark-mode

【旁白】 冲突解决完,再提交一次就完成了合并。

Key Takeaway

Practical Use Case

团队协作中冲突是常态。GitHub / GitLab 的 Pull Request 流程本质上就是"让别人帮你看一遍合并"。

Transition

到目前为止我们都在本地操作。下一章,我们把代码推到云端。


第十章 — 远程仓库与 GitHub(8:00 – 9:00)

Chapter Intro

【旁白】 本地仓库再完美,也只存在你的电脑里。

远程仓库(remote)让你:

最常用的远程平台是 GitHub。我们现在把本地仓库推上去。

Demo 10.1 — 在 GitHub 上创建空仓库

【画面】 镜头切到浏览器,打开 github.com,点击右上角 "+" → "New repository",输入仓库名 my-project,不要勾选任何初始化选项,点击创建。

【旁白】 去 github.com 创建一个新仓库,叫 my-project。关键点:不要勾选 "Add a README",也不要选 .gitignore 和 license——我们要推一个已经有内容的本地仓库上去。

创建完之后,GitHub 会显示一段提示,告诉我们如何连接。

Demo 10.2 — 连接远程仓库

【画面】 切回终端,输入命令。

【命令】

git remote add origin https://github.com/你的用户名/my-project.git
git remote -v

【输出】

origin  https://github.com/你的用户名/my-project.git (fetch)
origin  https://github.com/你的用户名/my-project.git (push)

【旁白】 origin 是远程仓库的默认别名——你可以理解成"给远程仓库起的小名"。

Demo 10.3 — 推送到 GitHub

【画面】 镜头特写 git push -u origin main 的输出。

【命令】

git push -u origin main

【输出】

Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 8 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (12/12), 1.05 KiB | 1.05 MiB/s, done.
Total 12 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), done.
To https://github.com/你的用户名/my-project.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'origin/main'.

【旁白】 推送成功!

-u 参数是 --set-upstream 的缩写,意思是"以后 git push / git pull 不用再指定 origin 和 main 了"。第一次推送必加。

Demo 10.4 — 在 GitHub 上看到结果

【画面】 刷新浏览器,GitHub 仓库页面显示出 README.md 的渲染内容、提交历史。

【旁白】 刷新浏览器,你的代码已经在 GitHub 上了!点 "Commits" 还能看到完整历史。

Demo 10.5 — 克隆别人的仓库

【画面】 镜头切换到一个新文件夹,演示克隆。

【命令】

cd ..
git clone https://github.com/octocat/Hello-World.git
cd Hello-World
ls

【输出】

Cloning into 'Hello-World'...
remote: Enumerating objects: 7, done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), done.
README.md

【旁白】 git clone 把远程仓库完整地复制到本地,包括所有历史和分支。这是加入一个新项目的第一步。

Key Takeaway

Transition

本地 + 远程的工作流你已经掌握了。最后我们把整个流程串起来——做一个完整的演示项目。


第十一章 — 综合实战:完整 Git 项目流程(9:00 – 9:40)

Chapter Intro

【旁白】 我们把所有学过的命令串起来,模拟一个真实项目的完整流程:

开新功能 → 提交 → 推送到 GitHub → 在另一台机器克隆 → 修改 → 拉取更新。

Demo 11.1 — 完整流程演示

【画面】 终端窗口一分为二:左边"开发者 A",右边"开发者 B",但实际操作中我们用同一台机器演示两次,第二次假装是新机器。

【命令 - 开发者 A】

cd ~/my-project
git checkout -b feature-readme-update
echo "" >> README.md
echo "## 贡献指南" >> README.md
echo "欢迎提交 PR!" >> README.md
git add README.md
git commit -m "docs: add contribution guide"
git push -u origin feature-readme-update

【输出】

[feature-readme-update a1b2c3d] docs: add contribution guide
Enumerating objects: 5, done.
To https://github.com/你的用户名/my-project.git
 * [new branch]      feature-readme-update -> feature-readme-update

【旁白】 开发者 A 在自己的分支上做了改动,并推送到 GitHub。

【命令 - 开发者 B(同一台机器的另一目录)】

cd ~
git clone https://github.com/你的用户名/my-project.git my-project-copy
cd my-project-copy
git log --oneline

【输出】

Cloning into 'my-project-copy'...
a1b2c3d docs: add contribution guide
d4e5f6a merge: resolve conflict between i18n and dark-mode
9f1e2d3 feat: add login section
...

【旁白】 开发者 B 克隆了整个项目,包括所有历史。

【命令 - 开发者 B 拉取更新】

cd ~/my-project
git pull origin main

【输出】

remote: Enumerating objects: 5, done.
Fast-forward
 README.md | 3 +++
 1 file changed, 3 insertions(+)

【旁白】 如果开发者 A 把分支合并回了 main 并推送,开发者 B 只要 git pull 就能同步所有改动。

整个流程就是这样:本地开发 → 推送到远程 → 其他人拉取或克隆。


第十二章 — 最佳实践速览(9:40 – 9:55)

Chapter Intro

【旁白】 最后给你几个能让生活轻松十倍的 Git 习惯。

Demo 12.1 — 频繁小提交

【旁白】 一次提交只做一件事。比起"改了一堆东西"的提交,"修复登录按钮颜色"这种小提交更容易理解、回滚、code review。

Demo 12.2 — 写好提交信息

【旁白】 好的提交信息:动词开头,描述清楚,例如 fix: handle null user in login。

坏的提交信息:update、测试、改了点东西——半年后你自己都看不懂。

Demo 12.3 — 用 .gitignore 排除不需要追踪的文件

【画面】 终端中创建 .gitignore 文件并运行 git status。

【命令】

cat > .gitignore << 'EOF'
node_modules/
.env
dist/
*.log
.DS_Store
EOF
git add .gitignore
git commit -m "chore: add .gitignore"
git status

【输出】

[main 8a7b6c5] chore: add .gitignore
On branch main
nothing to commit, working tree clean

【旁白】 .gitignore 列出哪些文件 Git 应该忽略。常见的有:依赖目录(node_modules/)、环境变量文件(.env)、编译产物(dist/)、临时文件、操作系统生成的隐藏文件(macOS 的 .DS_Store)。

永远不要提交密码、API 密钥、大型二进制文件。


课程总结(9:55 – 10:00)

【画面】 黑底白字快速闪回今天的关键命令:

git init        — 创建仓库
git add         — 放入暂存区
git commit      — 保存快照
git branch      — 创建分支
git merge       — 合并分支
git push        — 上传远程
git pull        — 下载更新
git clone       — 复制仓库

【旁白】 10 分钟过去了,你现在掌握了:

下一步你可以学:分支策略(Git Flow)、交互式 rebase、stash、tag、PR 工作流、CI/CD 集成。

最重要的是——多练。找个小项目,每天 commit 几次,一周之后这些命令就会变成肌肉记忆。

恭喜你完成 Git 基础课程。如果觉得有用,记得点赞、订阅、打开小铃铛。我们下期见。


附录:命令速查表

命令描述
git init创建新仓库
git status查看状态
git add <文件>暂存文件
git add .暂存所有改动
git commit -m "信息"提交快照
git log --oneline查看历史(紧凑)
git branch列出分支
git checkout -b <名>创建并切换分支
git switch <名>切换分支(新版)
git merge <名>合并分支
git remote add origin <URL>连接远程
git push推送到远程
git pull拉取远程更新
git clone <URL>克隆远程仓库

实践示例

后续与前置知识

暂无关联知识。

引用此知识点

更多基础课程知识