学习路线

如何学习 Git:学习计划、练习工具、文档与实践

更新于: · Skillaria.Top

学习 Git 最好分为四个阶段:基础循环(init、add、commit、log),分支与合并,远程仓库与团队协作,最后是撤销错误与进阶工具。达到熟练的工作水平通常需要 2–4 周在自己的仓库中定期练习。

Git 要靠动手学,而不是靠读。要想在团队中自信地工作,只需掌握大约二十个命令,并理解三个概念:提交是项目的快照,分支是指向提交的指针,远程仓库只是历史的另一个副本。下面是分阶段的 Git 学习计划,包括练习、免费资源以及判断阶段是否完成的标准。

本计划面向已经能在终端中使用 cd 和 ls 的初学者。如果还不会,建议先花一个晚上学习命令行基础:没有它,学习 Git 会吃力得多。

为什么要系统地学习 Git

许多人多年来只会用从别人教程里抄来的五个命令,一遇到冲突或“detached HEAD”就慌了。原因几乎总是一个:缺少心智模型,不理解命令到底改变了历史中的什么、文件中的什么。

系统学习 Git 的回报很快就能体现。你不再害怕尝试,因为知道如何撤销;你能从容地解决冲突;你还能保持清晰的历史,让评审者和雇主看得懂。几乎所有 IT 岗位的面试都会涉及 Git,从前端到 DevOps,再到数据分析。

第一阶段:基础——仓库、暂存区、提交

第一阶段的目标是理解基本循环以及 Git 的三个区域:工作目录、暂存区和仓库。大约需要 2–4 天,每天一小时。

  • 安装与初始配置:git config --global user.name、user.email,默认分支设为 main。
  • 创建仓库:git init。
  • 循环 git status → git add → git commit,以及用 git add -p 进行选择性添加。
  • 查看历史:git log --oneline、git diff、git diff --staged、git show。
  • .gitignore 文件:哪些内容不应进入仓库。

练习。 为你的笔记或小脚本创建一个仓库。做 15–20 次提交,每次只包含一个逻辑修改,并写清楚说明。每执行一条命令后都运行 git status,并向自己解释发生了什么变化。

阶段完成的标志:你能不借助提示说出 git diff 与 git diff --staged 输出的区别,并且能只提交部分已修改的文件。

第二阶段:分支与合并

分支是 Git 的核心,也是新手最害怕的部分。这里的重点不是记命令,而是学会在脑中描绘提交图。这一阶段大约需要一周。

  • 创建与切换:git branch、git switch、git switch -c。
  • HEAD 是什么,以及 detached HEAD 状态。
  • 合并:git merge、快进(fast-forward)与合并提交,以及 --no-ff 参数。
  • 冲突:<<<<<<< 与 >>>>>>> 标记,git merge --abort。
  • 可视化:git log --oneline --graph --all。

练习。 从 main 创建两个分支,在每个分支中修改同一个文件的同一行。依次合并它们,制造冲突并解决。重复练习,直到这个过程变得枯燥为止。

这一阶段交互式练习工具(下文会介绍)最有帮助:它会在每条命令后显示提交图,迅速建立直觉。

第三阶段:远程仓库与团队协作

目标是学会像团队那样与服务器协作。你需要一个 GitHub、GitLab 或其他 Git 托管平台的账户。大约需要一周。

  • 连接与克隆:git remote add、git clone,通过 SSH 密钥登录。
  • 同步:git push、git push -u、git fetch、git pull,以及它们之间的区别。
  • 远程跟踪分支,如 origin/main。
  • 分支(fork)、功能分支与带代码评审的 pull request。
  • 团队流程:GitHub Flow、Git Flow、trunk-based development。

练习。 用两台“电脑”操作同一个仓库,把它克隆到两个不同的文件夹中。在一个文件夹中提交并推送,在另一个文件夹中拉取。制造一次推送被拒绝的情形(因为服务器已经前进),并弄清楚原因。

git clone git@github.com:you/sandbox.git copy-a
git clone git@github.com:you/sandbox.git copy-b
cd copy-a && echo "from A" >> notes.txt && git commit -am "Change from A" && git push
cd ../copy-b && echo "from B" >> notes.txt && git commit -am "Change from B"
git push          # rejected:服务器已经前进
git pull          # 拿到 A 的修改,解决 notes.txt 中的冲突
git push

这个简短的场景模拟了团队中最常见的情形。仔细分析每条命令的输出:为什么推送被拒绝,fetch 之后 origin/main 发生了什么,合并提交是从哪里来的。然后用 git pull --rebase 重复一遍,并用 git log --oneline --graph --all 对比两种提交图。

更好的做法是找一个搭档,一起通过 pull request 完成一个小项目:这样你能真正体会评审、冲突以及分支约定。

第四阶段:撤销错误

这一阶段让 Git 从令人担忧的工具变成安全网,大约需要 3–5 天。

  • git restore 与 git restore --staged:撤销文件与暂存区中的修改。
  • git commit --amend:修正最近一次提交。
  • git reset 的 --soft、--mixed、--hard 模式。
  • git revert:安全地撤销已发布的提交。
  • git reflog:找回“丢失”的提交。

练习。 做几次提交,执行 git reset --hard HEAD~3,然后通过 reflog 把它们找回来。在“共享”分支上用 revert 撤销一个提交,并观察它在历史中是如何呈现的。

第五阶段:进阶工具

这些工具按需学习即可,但最好提前知道它们的存在。

工具何时需要
git rebase 与 git rebase -i保持线性历史,在提交 pull request 之前整理提交
git stash紧急切换分支,而不提交未完成的工作
git cherry-pick移动单个提交,例如热修复
git tag标记发布版本
git bisect找出破坏代码的提交
git worktree、git submodule多个工作副本;嵌套仓库

Git 练习工具:在哪里练习

练习工具的优点是提供安全的沙盒,并能立即显示结果。以下是几个免费的选择:

  • Learn Git Branching(learngitbranching.js.org)——最好的分支练习工具。提供分关卡的任务,有动画提交图,支持中文界面。涵盖 commit、branch、merge、rebase、cherry-pick、交互式 rebase 以及远程仓库操作。
  • Oh My Git!——一款开源的免费游戏,Git 命令以卡片形式呈现,背后运行的是真正的 Git。
  • 自己的练习仓库——最被低估的练习工具。创建一个 git-sandbox 文件夹,在里面随意折腾:这里没有任何损失。

练习工具非常有助于理解提交图,但无法取代真实项目:它们没有真实的文件、编辑器、代码冲突和 IDE。请把它们当作补充。

Git 文档与教程

Git 的官方文档位于 git-scm.com。同一网站还免费提供由 Scott Chacon 和 Ben Straub 合著的《Pro Git》,其中包括中文版本。这是最好的 Git 教材:前三章(基础与分支)是必读内容,“Git 内部原理”一章则适合希望彻底理解数据模型的人。

内置帮助随时可用:git help <命令> 打开完整手册,git <命令> -h 显示简要的参数列表。Git 的文档写得干巴巴,但准确无误;养成查阅文档而非搜索引擎第一条结果的习惯。

git help rebase        # 完整手册
git switch -h          # 参数简要说明
git help -g            # 概念性指南列表(gitworkflows、gittutorial 等)

另外,gittutorial 和 giteveryday 这两份指南随 Git 一起提供,可以通过 git help 打开。

自学还是报名课程

完全可以自学 Git:一本书、一个练习工具和一个沙盒就足以提供所需的一切。难点在于没有结构:很容易卡在理论上,或者只是堆砌命令而不理解;而且没有反馈,就没有人告诉你提交历史写得多么凌乱。

如果希望按顺序快速掌握,课程会很有帮助:从第一次提交到真实仓库中的 pull request,每一步都有任务。选择课程时,不要只看时长,而要看实践的比重:是否有冲突、撤销错误、团队协作和结业项目等任务。

学习 Git 需要多长时间

水平能做什么每天一小时所需时间
基础提交、查看历史、.gitignore3–5 天
工作水平分支、冲突、push/pull、pull request2–3 周
熟练撤销错误、rebase、reflog、团队工作流1–2 个月,结合真实练习

以上数字仅供参考:关键在于规律性。每天一小时,比每月一次的周末突击效果更好。

学习 Git 时的常见错误

  • 只用图形界面学习。 图形客户端很方便,但会隐藏底层模型。先弄清命令行,再选择顺手的工具。
  • 死记参数。 应当记住的是思想,参数随时可以用 -h 查到。
  • 害怕把东西弄坏。 只有亲手执行过 reset --hard 并恢复过,你才会真正知道 Git 在保护你。
  • 跳过远程仓库。 只会本地的 Git,没有 push、pull 和 pull request,只掌握了一半技能。
  • 提交说明只写 “fix” 或 “update”。 养成写清楚说明的习惯,越早越好。

结业项目:巩固所学

最好的检验是模拟团队开发。创建一个仓库,禁止直接推送到 main,然后邀请搭档,或者用两个账户协作。每个任务都使用独立的功能分支,并通过带评审的 pull request 合并;至少制造一次冲突,至少用 revert 撤销一次有问题的提交,并用标签标记一次发布。

完成这样的项目之后,Git 就不再是一堆咒语。你能看懂提交图,理解每条命令的后果,也准备好应对面试中的问题了。

总结

高效学习 Git 需要循序渐进:先是基本循环,然后是分支,接着是与服务器的协作,再是撤销错误,最后是进阶工具。练习工具帮助你看清提交图,《Pro Git》和官方文档提供深度,而个人沙盒与团队项目则让知识变成技能。正是沿着这条路径——从 git init 到结业项目中的 pull request——Skillaria 的 Git 课程组织了学习内容。

常见问题

一天之内能学会 Git 吗?

一天之内可以掌握基本循环:init、add、commit、log 和 push。要熟练地处理分支、冲突和撤销错误,则需要几周的练习。

学习 Git 需要会编程吗?

不需要。Git 处理的是任何文本文件,因此可以用笔记或文档来练习。只需要基本的终端操作能力。

有中文版的 Git 文档吗?

Git 的官方命令参考在 git-scm.com 上以英文为主,但《Pro Git》在同一网站上提供中文版本。Learn Git Branching 也支持中文界面。

学完 Git 之后学什么?

合理的下一步是 CI/CD(GitHub Actions、GitLab CI)、代码评审和团队流程;对于 DevOps 来说,还包括基础设施即代码,它同样保存在 Git 中。

通过视频学习本主题

课程“Git 从零基础到胜任开发者”结合实践详细讲解了这一主题。

前往课程