Web-Dev-For-Beginners 入门基石:写给 Web 开发新手的 Git 分布式版本控制实战指南
【免费下载链接】Web-Dev-For-Beginners24 Lessons, 12 Weeks, Get Started as a Web Developer项目地址: https://gitcode.com/GitHub_Trending/we/Web-Dev-For-Beginners
导读
本篇技术指南以 Web-Dev-For-Beginners 课程中的 Git 基础讲义为骨架,系统讲解分布式版本控制系统的核心概念、跨平台安装方法、安装后的身份配置,以及覆盖"创建项目—快照提交—分支合并—远程协作—历史检视"全链路的 Git 命令速查表。读完本文,你将理解commit、branch、merge、push/pull之间的协作关系,并能在本地与远程仓库之间执行完整的日常工作流,为后续所有项目型课程(Terrarium、太空游戏、银行应用等)打下版本管理基础。本仓库内该讲义的英文原文位于 Git-Basics/README.md,更多与 GitHub 平台结合的实操步骤可参考 1-getting-started-lessons/2-github-basics/README.md。
一、Git 是什么:三个基本事实与五大特性
在 Web-Dev-For-Beginners 的课程结构中,"Git 基础"与"GitHub 入门"(见 1-getting-started-lessons/README.md)同属于第 1 周"开始 Web 开发"的预备知识模块,其定位是先于任何 HTML/CSS/JavaScript 代码学习掌握的工具能力。关于 Git,讲义给出了三个基本事实:
- Git 是一个分布式版本控制系统(distributed version control system);
- 完整的代码库与历史记录同时存在于每位开发者的本地计算机上,这使创建分支(branching)与合并(merging)变得非常容易;
- Git 被用作版本控制系统(VCS),用于跟踪计算机文件中的变更。
围绕上述定义,Git 为开发者提供的核心能力可以概括为五点:
- 分布式版本控制:每个克隆仓库都是一份完整备份,不依赖单一中心服务器;
- 协调多位开发者之间的工作:多人可以在各自分支上并行开发,再通过合并汇流;
- 记录"谁在什么时间改了什么":每次变更都有作者、时间戳与说明;
- 随时回退:任何历史快照都可被重新访问或恢复;
- 本地与远程仓库并存:本地仓库用于日常提交,远程仓库(如 GitHub)用于备份与协作。
需要说明的是,"分布式版本控制""谁改了什么"等表述来自讲义原文,而"克隆仓库即完整备份、不依赖单一中心"属于分布式版本控制模型的标准工作方式。
二、Git 核心概念:历史跟踪、快照与暂存
要正确理解 Git 的命令体系,先要建立几个关键心智模型:
- 跟踪代码历史(keeps track of code history):Git 不保存"文件的多个副本",而是保存一系列带哈希标识的变更记录,构成可追溯、可回放的历史链。
- 为文件拍摄"快照"(takes snapshots of your files):一次成功的提交就是对当前文件集合状态的一次完整快照。
- 由你决定何时拍摄快照——这个动作就是创建一次
commit:Git 不会自动保存,必须显式提交,这正是它与普通"另存为"的本质区别。 - 任何时候都可以回到任意一张快照:借助
git log查看历史、用checkout/reset等命令切换或恢复文件状态。 - 提交前可以暂存文件(stage files before committing):你可以把"已修改"与"待提交"两个集合分开管理,只把想要的文件加入暂存区,形成逻辑清晰的提交单元。
这套"修改(modified)→ 暂存(staged)→ 提交(committed)"的三态模型是整个 Git 命令表(见本文第四部分)的组织依据:git add对应暂存、git commit对应拍摄快照、git push对应同步到远程。若要查看更多结合状态流转的图文讲解,可阅读课程中的 2-github-basics 一课。
三、Git 与 GitHub 的区别:软件与云服务
Git 与 GitHub 常被混为一谈,但二者定位完全不同。讲义用一张对比表清晰区分了两者:
| Git | GitHub |
|---|---|
| Git 是一款软件 | GitHub 是一项云服务 |
| Git 安装在系统本地 | GitHub托管于互联网上 |
| 它是命令行工具 | 它是图形化用户界面 |
| Git 由Linux社区维护 | GitHub 由Microsoft维护 |
| 聚焦于版本控制与代码共享 | 聚焦于集中式源代码托管 |
| Git 采用开源许可 | GitHub 提供免费档与付费档 |
| Git 于2005 年发布 | GitHub 于2008 年发布 |
理解这一区别的实践意义在于:本地每天高频使用的是 Git 命令行或图形前端;GitHub 则是存放远程仓库、发起 Pull Request、进行问题跟踪的平台。本仓库根目录 README.md 的"Getting Started"章节也印证了这种分工——课程要求学习者先Fork再git clone,本地用 Git 管理,云端用 GitHub 协作。
四、跨平台安装 Git 与安装后配置
4.1 按系统安装
- Linux(Debian/Ubuntu 系)
sudo apt-get install git - Linux(Fedora 系)
sudo yum install git补充说明:Fedora 较新版本默认的包管理器为
dnf,yum命令通常仍可用;无论使用哪种,安装完成后建议用git --version验证是否成功。 - macOS 与 Windows:前往 Git 官方下载页面(git-scm.com/downloads)分别选择 Mac、Windows 安装包。Windows 安装程序为图形化向导,按Next → Next → Next → Install的默认选项一路继续即可完成安装,默认配置即可满足初学者绝大多数场景。
4.2 安装后的第一件事:通过 git bash 配置身份
安装完成后,需要先让 Git 认识你。这个身份信息会附加到你每一次提交上,因此应填写你愿意公开的名称与邮箱(例如参与开源项目时常用的 GitHub 绑定邮箱):
git config --global user.name '你的名字' git config --global user.email '你的邮箱'其中--global表示该配置写入当前系统用户的全局配置(通常位于~/.gitconfig),对所有仓库生效。若要检查当前配置是否已写入,可运行:
git config --list如果需要为本课程的学习仓库额外练习"从克隆到提交"的完整流程,可以先参照根 README.md 中的指引,将本课程仓库 Fork 后克隆到本地,再用上述两条命令完成首次身份绑定。
五、Git 命令速查表:五类核心场景全覆盖
讲义的核心价值在于一张按使用场景组织的命令速查表。下文将其完整展开,并对部分命令补充语义解释与使用提示。
5.1 获取与创建项目(Getting & Creating Projects)
| 命令 | 说明 |
|---|---|
git init | 在当前目录初始化一个本地 Git 仓库(会创建隐藏的.git目录) |
git clone ssh://git@github.com/[username]/[repository-name].git | 在本地创建远程仓库的一份副本 |
提示:git clone除 SSH 协议外,同样支持 HTTPS 与 GitHub CLI(gh repo clone)。两种协议的选择会同时影响鉴权方式——SSH 需要在 GitHub 上配置公钥。
5.2 基础快照(Basic Snapshotting)
| 命令 | 说明 |
|---|---|
git status | 查看工作区/暂存区当前状态(改动、已暂存、未跟踪文件) |
git add [file-name.txt] | 将指定文件加入暂存区 |
git add -A | 将所有新增与修改文件加入暂存区(等同git add .的全量语义) |
git commit -m "[commit message]" | 将暂存内容正式提交,生成一次历史快照 |
git rm -r [file-name.txt] | 从版本库移除文件(或目录,-r表示递归) |
git push | 将本地提交推送到远程仓库 |
git pull | 从远程仓库拉取最新变更并合并到当前分支 |
对初学者而言,日常节奏正是git status(确认状态)→git add(暂存)→git commit(提交)→git push(推送)的循环;当改动已提交但想撤销对某个文件的未暂存修改时,可参考讲义分支章节中的git checkout -- [file](本文 5.3 表)。完整的图文版"首次提交仓库"分步练习同样收录于 2-github-basics 一课。
5.3 分支与合并(Branching & Merging)
| 命令 | 说明 |
|---|---|
git branch | 列出本地分支(星号*标识当前所在分支) |
git branch -a | 列出全部分支(本地与远程) |
git branch [branch name] | 创建新分支 |
git branch -D [branch name] | 删除指定分支(-D为强制删除) |
git push origin --delete [branch name] | 删除远程分支 |
git checkout -b [branch name] | 创建新分支并切换过去 |
git checkout -b [branch name] origin/[branch name] | 复制远程分支并在本地基于它新建/切换分支 |
git branch -m [old branch name] [new branch name] | 重命名本地分支 |
git checkout [branch name] | 切换到指定分支 |
git checkout - | 切换到上一次使用的分支 |
git checkout -- [file-name.txt] | 丢弃某文件工作区中的改动(恢复为暂存区/HEAD 版本) |
git merge [branch name] | 将指定分支合并进当前活动分支 |
git merge [source branch] [target branch] | 将源分支合并进目标分支 |
git stash | 把当前"不干净"工作目录的改动临时保存起来(以便切换分支) |
git stash clear | 清除全部已暂存(stash)记录 |
提示:分支是并行开发与开源协作的基石——每个功能、每个 bug 修复都应有独立分支;stash则用于"切换分支前先搁置手头半成品"的场景。在 2-github-basics 一课 中,贡献者工作流正是"Fork → Clone → 创建分支 → 修改 → 合并 main → 推送 → Pull Request"。
5.4 分享与更新项目(Sharing & Updating Projects)
| 命令 | 说明 |
|---|---|
git push origin [branch name] | 将指定分支推送到远程仓库 |
git push -u origin [branch name] | 推送分支到远程,并记住该分支的上游关联(-u) |
git push | 推送到已记住上游的对应分支 |
git push origin --delete [branch name] | 删除远程分支 |
git pull | 将本地仓库更新到远程最新提交 |
git pull origin [branch name] | 从远程指定分支拉取更新 |
git remote add origin ssh://git@github.com/[username]/[repository-name].git | 为本地仓库添加名为origin的远程仓库 |
git remote set-url origin ssh://git@github.com/[username]/[repository-name].git | 将origin的远程地址改为 SSH 形式 |
提示:origin只是约定俗成的远程仓库"昵称",首次push -u之后,日常同步只需git pull与git push两条无参命令;set-url常用于将原本 HTTPS 的远程地址切换为 SSH(以启用免密推送)。
5.5 检查与比较(Inspection & Comparison)
| 命令 | 说明 |
|---|---|
git log | 查看提交历史(变更记录) |
git log --summary | 查看历史并附带每个提交的概要统计(含新增/删除文件信息) |
git log --oneline | 以单行压缩格式快速浏览提交历史 |
git diff [source branch] [target branch] | 在合并前预览源分支与目标分支之间的差异 |
提示:git log是你"回访任意快照"的入口——找到目标提交的哈希后,即可结合checkout/reset等命令恢复到该状态;而git diff应在merge之前反复使用,以确认将引入的改动范围。
六、在本仓库中实践:把命令表变成肌肉记忆
Git 基础讲义是 Web-Dev-For-Beginners 12 周课程的前置模块。要从"看懂命令"进阶到"熟练操作",最直接的演练对象就是本课程仓库本身:
- 克隆课程仓库:在根 README.md 中,官方给出的起步方式是先 Fork 本课程仓库,再执行
git clone获得本地副本; - 为每课创建分支:参照 5.3 节,用
git branch [lesson-name]或git checkout -b [lesson-name]为即将学习的课节(如3-terrarium、6-space-game)建立独立分支,保证主干干净可回退; - 提交你的练习代码:完成某课 assignment 后,用
git add -A+git commit -m "描述性消息"拍摄快照,再用git push -u origin [branch]推送到你自己的远程副本,形成可展示的作品集; - 对比提交差异:改错或重构时,用
git diff与git log --oneline快速定位改动,必要时用git checkout -- [file]丢弃局部修改。
上述分支协作与 Pull Request 的完整演练,在 2-github-basics 一课 中有逐步骤的配套讲解(含提交信息规范、合并冲突处理与仓库社区规范建议)。Git 基础讲义对应的英文原始版本位于 Git-Basics/README.md,当翻译表述存在歧义时可对照阅读。
七、小结
Git 是每位 Web 开发者工具箱中最先需要掌握、也最长期受用的基础设施。本文完整继承了课程讲义的核心内容:先建立"分布式版本控制 + 快照 + 暂存 + 本地/远程仓库"的心智模型,厘清 Git 软件与 GitHub 云服务的边界,然后按系统完成安装与全局身份配置,最后把覆盖创建、快照、分支合并、远程同步与历史检查五类场景的命令表纳入日常实践。当你能够不假思索地完成status → add → commit → push → pull这条主干链路,并敢于用分支承载每一次新功能尝试时,你就已经具备了与课程其余 23 课以及任何开源项目协作的基础能力。
【免费下载链接】Web-Dev-For-Beginners24 Lessons, 12 Weeks, Get Started as a Web Developer项目地址: https://gitcode.com/GitHub_Trending/we/Web-Dev-For-Beginners
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考