1. 入门前的三个认知:Git是什么、解决什么问题、适合谁学
很多人第一次接触Git,是在GitHub上看到一个开源项目,想下载代码却不知道点哪里。也有人是被面试题逼着来补课的,背了一堆命令但完全不知道它们在干什么。我见过最可惜的情况是,已经用Git写了一年代码的人,遇到代码冲突只会“凭感觉解决”,出了问题就删掉整个文件夹重新克隆。
先说清楚最基础的一件事:Git是一个版本控制系统。它的核心职责只有一个——帮你记录项目文件的每一次变化。就像写文档时反复保存不同版本,你可以回溯到任何一个时间点,查看当时文件长什么样,甚至把整个项目恢复到那个状态。但它远远比“另存为不同文件名”强大得多。
它能解决的实际问题,我总结成三类:
- 后悔药问题:代码改坏了,删错了,写了一晚上想退回昨天的版本,一条命令的事。
- 并行协作问题:三个人同时改同一个项目,谁改了哪几行,哪次改动是谁提交的,清清楚楚,互不覆盖。
- 多线开发问题:新功能还在实验阶段,不想影响稳定的主代码,开一个分支随便折腾,稳定后再合并回去。
Git适合谁来学?答案是所有写代码的人。这跟你用什么语言、做什么方向没关系。前端、后端、客户端、数据分析、算法,凡是需要跟代码文件打交道的工作,Git迟早会出现在你的工作流里。哪怕你目前是独立开发、一个人维护整个项目,坚持用好Git也能让你在三个月后翻阅历史记录时少掉一大半头发。
我给你的建议是:不要一上来就扎进命令细节里,先花十分钟把“版本”“快照”“仓库”这几个概念在脑子里立起来,后面的学习会顺畅很多。这就是把这篇入门指南的框架确定为“概念先行、安装兜底”的原因。
Git不是你写代码的必需品,但它是你从“能跑就行”走向“工程化开发”的第一道门槛。门槛这东西,迈过去之前觉得高,迈过去之后回头看,其实就是一层台阶。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心概念拆解:仓库、提交、分支到底在说什么
2.1 仓库(Repository):你项目的“总账本”
仓库是理解Git的第一个锚点。你可以把仓库理解成一个特殊的文件夹,这个文件夹里存的不只是你的代码文件,还有一份记录着“谁在什么时候改了什么”的总账本。
这份账本藏在一个名为 .git 的隐藏目录里。你平时写代码用的 src、docs、tests 这些目录和文件,都是仓库的“正文内容”,而 .git 目录是仓库的“批注和修订记录”。两者加在一起,才算一个完整的Git仓库。
提示:这里有个很关键的区别需要记住——Git仓库 = 工作文件 + 历史记录。如果你只复制了项目文件夹,没有把隐藏的
.git目录一起带走,那对方拿到的只是一堆没有历史的散乱文件。
实践中有两类创建仓库的方式:一是在本地把已有目录变成仓库,执行 git init 即可;二是从远程服务器上克隆现成的仓库,执行 git clone。初学者需要记住的最重要一点是:在Git世界里,每个仓库都是完整独立的,每个开发者的本地都是一个包含完整历史的仓库,这跟传统的“中央服务器 + 本地副本”模式有本质区别。
2.2 提交(Commit):给项目拍快照,而不是只记差异
提交(commit)是Git最核心的操作单位。我把每一次提交理解成“给项目拍一张高清快照”——提交时,Git会把整个项目当前的文件状态完整地记录下来。
这里要讲清楚一个常见的误区:很多人以为Git记录的是“这一次改了哪几行”,就像Word的修订痕迹一样。实际上Git记录快照。它会把所有文件的当前内容保存在对象库里,相同的文件通过哈希复用存储空间,所以不会重复占地方。比较两个版本之间的差异时,Git是拿两张快照去做对比,而不是翻日志找修改记录。
打个比方:你抓拍了两张照片,一张是周一的房间,一张是周五的房间。想知道这周房间发生了什么变化,不需要看每天的清洁记录,直接把两张照片做对比就可以了。Git就是这么干的。
每次提交,你需要声明“这次变更的理由”——即提交信息(commit message)。它是给未来的自己和其他协作者看的,而不是写给电脑看的。我见过太多人写 update、fix bug、123、aaa 这样的提交信息,等到回溯历史的时候,面对几百条“aaa”,你根本无从下手。这属于那种“当时偷懒,后来加倍补偿”的事。
一个规范的提交信息建议这样写:第一行是简明摘要(50个字符以内),说明这次提交做了什么;空一行后,用正文补充细节——为什么做这个改动、影响了什么模块。举例来说:
bash复制fix: 修复订单列表在极端日期格式下的崩溃问题
- 根因是时间解析函数对yyyy/mm/dd格式容错不足
- 追加边界检测,无效日期直接返回空列表而不是抛异常
- 补充三组回归测试用例
这条提交信息如果写成 fix bug,三个月后你回看它,等于什么也没说。这条提交信息如果写成上面这个样子,问题根因、改动方式、验证手段一目了然。
2.3 分支(Branch):平行宇宙中的代码世界
分支是Git设计中最精妙的部分,也是最让新手迷茫的部分。
简单说,分支就是一个可移动的指针,指向某一次提交。你创建一个新分支,等于在当前的提交节点上“分叉”出了一个平行世界。从此以后,这个分支上的提交不会影响原来的分支,两个世界各行其是,互不干扰。
我特别喜欢用游戏存档来解释分支:玩一个多结局的游戏,你存了一个档,想试试另一条剧情线,于是新开一个存档。两个存档独立推进,哪条线走通了,再把那个档里的好装备复制回主存档。
实际工作中的典型用法是:主分支(通常叫 master 或 main)保持稳定可发布的状态,开发新功能时新建一个分支,比如 feature-login-page,在里面随便改、随便提交。等功能做完了、测试通过了,再把这个分支合并回主分支。如果做了一半发现此路不通,直接丢弃这个分支即可,主分支完全不受影响。
注意:分支本身是轻量级的。创建分支不是复制文件,只是新建一个指针,所以你可以毫无心理负担地多建分支。很多入门者习惯全程在主分支上改代码,这相当于在一个存档里玩遍所有结局——赢了是运气,出问题就是灾难。
2.4 三个工作区:工作目录、暂存区、仓库
首次系统学习Git时,“暂存区”这个概念最容易让人卡壳。为什么不能改了文件直接提交,非要先“暂存”一下?
先看三个区的职责分工:
- 工作目录:就是你日常编辑文件的地方。这里的内容可能已经被你修改了,但Git还不追踪这些改动(至少还“不认识”这些改动)。
- 暂存区(Index/Staging Area):一个临时的待提交区域。你把哪些文件放进去,Git就会在下次提交时打包保存这些文件的内容。
- 仓库(历史区):保存了所有提交记录的地方,是你项目历史的“正式存档处”。
为什么要多一个暂存区?直接来看场景:你同时改了两个文件,一个是修了一个紧急bug,一个是写了一版还没完成的新功能。如果不存在暂存区,你就只能把这两个改动一起提交,要么被迫带着半成品一起“发布”,要么把改动拆开手工处理。
有了暂存区,你可以只把bug修复的那个文件加入暂存区,提交一次;新功能的文件继续留在工作区,等写好了再单独提交。把一次提交的粒度控制在一个逻辑单元内,这是Git用起来“专业”与“业余”的分水岭。
对应的三个命令也是必然的:
bash复制git add <文件> # 文件从工作目录 进入 暂存区
git commit -m "说明" # 暂存区内容 打包成一次 历史提交
git status # 随时查看当前 三个区的状态
2.5 远程仓库与本地仓库的关系
现在聊聊远程仓库。常见的使用方式是:你在本地开发提交,然后推送到远程仓库,别人从远程仓库拉取你的更新。
需要澄清一个非常流行的误解:远程仓库不是“云端备份那么简单的复制”。Git的远程仓库和本地仓库一样,都是一个完整的仓库。如果没有远程仓库,本地一样可以提交、分支、回滚——项目历史都活在本地。远程仓库的核心价值是方便协作,以及提供一个大家都认可的“共同的基准点”。
用大白话说:你本地怎么玩都行,提交、回滚、开分支,Git都不吭声。但如果你想让别人看到你的提交、或者把别人的提交拉到自己这里来,就需要一个双方都能访问的中间人——远程仓库。它更像“公用的代码集散地”,而不是“你的网盘”。
既然是集散地,就有两对核心操作:
git push:把本地的提交推送到远程仓库。git pull:把远程仓库的更新拉取到本地。
另外还有一对容易被忽略的操作:
git fetch:只把远程仓库的更新下载到本地,但不自动合并。git merge:把某个分支的提交合并到当前分支。
fetch 和 pull 的区别,初学者经常混淆。pull 本质上是“先 fetch 再自动 merge”。所以我强烈建议新手养成一个习惯:在合并远程变更之前先 git fetch 看一下对方改了什么,心里有数后再决定怎么合并。自动合并看起来很省事,但遇到冲突时毫无心理准备,反而容易手忙脚乱。
3. 版本控制的核心价值:为什么团队协作离不开Git
3.1 从“复制粘贴协作”到“并行开发”
在Git出现之前,团队协作写代码的方式非常原始。我听说过不少真实案例,早年有些团队的工作流是这样的:一个模块改完了,把整个目录压缩成zip包,通过聊天工具发给其他成员;对方接过来覆盖本地文件,然后继续改。这种方式的坑有多深,经历过的人都懂:
- 谁改了哪个文件,完全靠记忆和口口相传。
- 两个人都改了同一个文件,后覆盖的人直接“吞噬”前一个人的成果。
- 版本越攒越多,最后根本分不清哪个压缩包才是最新的。
Git通过“每个人本地都有一个完整仓库”的分布式设计,彻底改变了这个局面。所有人都在自己的本地仓库里平行推进,互不阻塞。你想改什么就改什么,不必等别人“锁”好文件再动手。改完了,提交,推送,其他人主动或被动地获取你的更新。
3.2 可回溯、可归因、可审计
如果你在一个项目里待得足够久,总会遇到这种状况:线上出了bug,团队紧急修复。修复完之后,第一个问题往往是“这个bug是什么时候引入的”。没有版本控制,这个问题就只能靠猜。有了Git,你可以在提交历史和文件变更记录里逐行追踪,精准地定位到“哪一次提交、哪一个文件、哪一行代码”引入了问题,进而联系到当时改这块代码的人(当然,是对事不对人的那种联系)。
这就是版本控制的“可审计性”。它天然地留痕:谁提交的多、谁只改不改提交信息、谁的代码造成了大量冲突——这些信息都摊在桌面上。对团队管理者来说,它可以作为研发效率分析的客观依据,但更重要的价值,是逼着每个开发者养成“小步提交、清晰说明”的工程习惯。
3.3 合并与冲突:协作中唯一需要“人”的地方
有了分支,两个人可以各改各的,但最终代码要合到一起,靠的是 merge。在大多数情况下,Git能自动合并:同一文件的不同区域各自修改互不影响,Git会自动把它们合成一个新版本。
但有一种情况Git无能为力:两个人改了同一个文件的同一块区域,且改动内容不同。此时Git会报告“冲突”(conflict),把冲突标记直接写进文件里。
很多初学者一看到冲突就慌,以为是代码“坏了”。其实冲突是Git的一种保护机制,它不是在责怪你,而是诚实地告诉你:“这里我实在没法判断谁对谁错,请你俩商量一下,手动决定保留哪些内容。”
解决冲突的标准流程是这样的:
- 打开带有冲突标记的文件(搜索
<<<<<<<即可定位)。 - 逐个查看冲突块,决定保留一方、保留另一方、还是混合两边的代码。
- 删除冲突标记行(
<<<<<<<、=======、>>>>>>>)。 - 保存文件,执行
git add,然后git commit完成合并。
实操心得:解决冲突前,一定先跟冲突的另一方沟通,不要擅自决定删掉对方的代码。我见过太多因为“我以为那代码没用”而引发的线上故障。你可以保留自己的版本先提交,但绝不能假设对方的代码是错的。
3.4 Git与GitHub的关系:傻傻分不清?
入门用户最常混淆的两个词:Git和GitHub。
一句话说清楚:Git是一个软件工具,GitHub是一个基于Git的在线代码托管平台。Git负责管理版本历史,担任“引擎”的角色;GitHub则是把这种能力做成了一种网络服务,附加了在线浏览、Pull Request(合并请求)、Issue(问题追踪)、Wiki等功能。
除GitHub之外,同样基于Git的平台还有GitLab、Gitee(码云)等。它们之间的本质区别不在Git本身,而在托管策略、权限管理、CI/CD集成方式等外围功能。对入门来说,你只需要在一开始理解:本地开发时用的命令是Git,跟远程服务器打交道的命令也是Git,而“远程服务器”具体是哪家平台,是后面才需要考虑的事。
4. 安装前的准备:各平台环境梳理与版本选择
谈到安装这一步,很多新手容易出现一个误区——直接一条命令装完就算完事,也不管装的是什么版本、装完怎么调用、跟系统自带的工具怎么共存。我建议安装前花两分钟,把下面几个问题想明白。
先弄清楚一个基本概念:Git是一个命令行工具。它没有“主界面”,你平时是通过终端/命令行来调用它的。有一些图形化客户端(比如SourceTree、TortoiseGit、GitKraken)可以把Git操作包装成可视化界面,但底层调用的仍是Git这个命令行工具。所以安装Git不等于安装一个“软件”,而是给系统添置一套命令行工具集。
然后是版本选择:Git保持着一个相当稳定的发布节奏,通常几个月发布一个大版本。对绝大多数用户来说,选择官方最近发布的稳定版本(stable version)即可,不需要刻意追求“最新”。新版本可能带来新功能,但如果你只需要日常的提交、分支、推送,稳定版本绰绰有余。我曾经见过因为装了开发预览版而在执行 git status 时遇到异常报错的情况,没必要给自己找这种麻烦。
最后要强调一个Windows用户最容易踩的坑:Git安装向导里有一页会问“Adjusting your PATH environment”,默认选项是“Git from the command line and also from 3rd-party software”——请保持默认。如果你选成了“Use Git Bash only”,装完后你在系统自带的cmd或PowerShell里输入 git 会提示找不到命令,新手立刻就会陷入“到底装成功没有”的困惑。
5. 分平台安装全流程:Windows、macOS、Linux逐一实操
5.1 Windows平台安装步骤
Windows用户建议下载官方安装包。流程如下:
- 打开Git官网,进入Downloads页面,选择Windows版本,下载安装包(一般是64-bit版本)。
- 双击安装包运行,一路确认许可协议、安装路径。
- 关键的配置页面按如下选择:
- Select Components:默认即可。如果你想把Git Bash快捷方式放到桌面,可以勾选。
- Default editor:默认是Vim编辑器,如果你不熟悉Vim,建议选择“Use Visual Studio Code as Git's default editor”(前提是你装了VS Code),或者选择Notepad++。这是很多新手忽略的一步——提交时偶尔需要输入多行信息,Vim的操作习惯与Windows用户日常习惯差异较大,容易卡住。
- Adjusting your PATH environment:保持默认“Git from the command line and also from 3rd-party software”。
- Line ending conversions:默认选项“Checkout Windows-style, commit Unix-style line endings”即可。
- 安装完成后,打开“开始菜单”里的Git Bash,输入
git --version验证,看到类似git version 2.40.0.windows.1的输出即安装成功。
Windows用户日常使用Git有两条路:一是使用Git Bash(这是随Git安装自带的模拟终端环境,命令风格更接近Linux,对新手来说更友好);二是在PowerShell或cmd里直接使用Git命令。两者都能正常执行Git命令,但Git Bash对路径处理更符合Git的习惯,我建议Windows入门用户优先使用Git Bash。
5.2 macOS平台安装步骤
macOS上安装Git有两条主要途径,按推荐程度排序如下。
途径一:使用Xcode Command Line Tools(推荐给不想装额外包管理工具的用户)
macOS系统自带的“命令行开发者工具”里就包含Git。在终端里运行:
bash复制xcode-select --install
系统会弹出安装窗口,点击安装即可。不过要提醒一句:这个方式安装的Git版本通常不是最新的,但胜在省事,且与系统组件兼容性最好。如果你只需要基本功能,这条路足够。
途径二:使用Homebrew安装(推荐给想保持Git版本最新的开发者)
如果你已经装了Homebrew,流程是一条命令的事:
bash复制brew install git
安装完成后建议执行:
bash复制git --version
另外,Homebrew安装的Git默认路径是 /usr/local/bin/git 或 /opt/homebrew/bin/git(芯片架构不同路径不同),而系统自带的Git在 /usr/bin/git。两者可能并存,终端调用时优先走PATH环境变量里靠前的那个。你可以在终端里执行 which git 确认当前用的是哪一个。
实操心得:macOS用户第一次运行
git命令时,系统可能弹出一个“来自互联网的下载”确认窗口,这是macOS的Gatekeeper机制在拦截未签名二进制文件。点允许即可,不是病毒提示。
5.3 Linux平台安装步骤
Linux各发行版都自带包管理器,安装Git非常简单。以Debian/Ubuntu系为例:
bash复制sudo apt update
sudo apt install git
CentOS/RHEL/Fedora系对应使用:
bash复制sudo yum install git
# 或者在新版Fedora上:
sudo dnf install git
Arch Linux用户:
bash复制sudo pacman -S git
安装后同样用 git --version 验证。
Linux用户需要注意的一点是:如果安装了多个Git版本(例如发行版自带的旧版本和手动编译的新版本),执行 git --version 前建议用 which git 看清调用的到底是谁。手动编译安装的Git默认路径通常是 /usr/local/bin/git,会在系统自带路径 /usr/bin/git 之前被找到。
5.4 验证安装成功的几种方式
不管哪个平台,安装完成后建议按顺序做这四件事,属于“黄金四连验”:
- 看版本:
git --version,确认能输出版本号,而不是报错“command not found”。 - 看路径:
which git(Windows的Git Bash里也支持),确认执行的是你预期的那个Git。 - 看帮助:
git help,确认能列出常见命令列表。 - 建仓库测试:临时建一个目录,执行
git init,再执行git status,观察输出是否正常。
第四步尤其重要。很多用户装完Git后发现“完全能用”,但一进到独立目录里执行命令就各种报错,往往是目录权限或者环境变量配置有问题。在干净的临时目录里跑一遍全流程,能帮你快速区分是安装问题还是使用问题。
6. 安装后的第一件事:配置身份与完善环境
6.1 配置用户名与邮箱:为什么这是第一步
Git每次提交都会记录“谁做了这个提交”。这个“谁”不是从操作系统用户名里读的,而是从Git的配置里读取的。如果不配置,Git会尝试用系统用户名和主机名拼凑一个默认身份,提交到远程仓库后,别人看到的就是 none@yourhostname (none) 这类丑陋的名字。
需要明确的是:这个身份跟你的GitHub账号、GitLab账号没有强制绑定关系,它只是一段展示用的文本。但实际协作中,远程平台通常会把“提交人邮箱”与平台账号做关联,用正确的邮箱提交,你的提交记录才能正确归到你的账号名下。这也是为什么要用真实常用的邮箱来配置。
配置命令非常简单:
bash复制git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
--global 表示全局生效,这台机器上所有仓库默认都会用这个身份。如果你只是想在某个仓库里用另一个身份,在该仓库目录里去掉 --global 重新设置即可。
验证配置是否生效:
bash复制git config --global --list
6.2 配置文本编辑器、行尾符与默认分支名
除了用户名邮箱,还有三个环境配置建议一并完成。
默认编辑器:Git在某些操作(如 git commit 没有带 -m 时、git merge 需要填写合并信息时)会调用你的默认编辑器。默认很可能是 nano 或 vim。用一个你熟悉的编辑器会舒服很多:
bash复制git config --global core.editor "code --wait" # VS Code
git config --global core.editor "vim" # Vim 用户
行尾符处理:Windows和Unix/Linux系统对换行符的处理不一样(Windows是CRLF,Unix/Linux是LF)。Git提供 core.autocrlf 配置来平衡这种差异:
bash复制git config --global core.autocrlf true # Windows 用户推荐
git config --global core.autocrlf input # macOS/Linux 用户推荐
这样配置后,Windows上检出文件时自动转为CRLF,提交时自动转回LF,避免出现“明明没改代码,Git却提示整个文件都变了”的诡异情况。
默认分支名:新的Git版本默认分支名是 master,但很多云平台和新建教程里用的是 main。保持什么其实无所谓,关键是团队统一。你可以按当前主流默认设为 main:
bash复制git config --global init.defaultBranch main
6.3 初始化第一个本地仓库:跑通完整闭环
配置完毕,建议立刻跑一遍“第一个仓库”的完整流程,把概念和命令串起来。步骤如下:
bash复制mkdir first-repo
cd first-repo
git init
此时Git会提示 Initialized empty Git repository,说明仓库初始化成功。接着创建一个测试文件:
bash复制echo "hello git" > README.md
git status
git status 会告诉你 README.md 处于未跟踪状态。然后分两步提交:
bash复制git add README.md
git commit -m "docs: 初始化项目,添加README"
这时 git log 会显示一条提交记录,包含提交人、邮箱、时间、提交说明。
顺手再多做一件事,看看工作区状态:
bash复制git status
输出里会显示干净的提示。至此,你已经完整走通了“工作目录 → 暂存区 → 仓库”这个最核心的闭环。后面所有的分支、合并、远程推送,都是在这个闭环的基础上一层层叠加出来的。
7. 常见问题速查:安装与环境配置的避坑指南
我在带新人时,发现下面这些问题反复出现。整理成速查表,遇到直接对照处理。
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
输入 git 提示“command not found” |
未安装Git,或未加入PATH | 重新运行安装程序,确认在PATH设置页选择正确选项;Windows用户可在Git Bash里测试 |
输入 git --version 显示的版本非常旧 |
系统自带旧版本Git抢占路径 | 执行 which git 确认真实路径,安装新版后调整PATH顺序或直接替换 |
| 提交时报“Please tell me who you are” | 未配置用户名和邮箱 | 执行 git config --global user.name 和 user.email,注意邮箱格式 |
明明改了一行代码,git status 显示整个文件变化 |
行尾符差异 | Windows端执行 git config --global core.autocrlf true,已跟踪文件可执行 git add --renormalize . 修复 |
| 提交时卡在编辑器界面不知如何退出 | 默认编辑器是vim/nano | 如果是vim,按 Esc 再输入 :wq 保存退出;更建议直接设置core.editor为熟悉的编辑器 |
git init 后 .git 目录找不见 |
隐藏文件默认不可见 | 显示隐藏文件即可,不要手动删除 .git 目录,删了仓库历史就没了 |
| 安装包下载速度很慢 | 网络原因 | 可选用国内镜像站下载,或者耐心等待,安装包一般只有几十兆 |
这里特别强调一点误操作的重灾区:不要手动删除或修改 .git 目录里的文件。很多新手在排查问题时听人说“删掉.git重新来”,结果就是项目历史清零,等于把记账本烧了。如果真的想放弃历史,新建一个仓库是更稳妥的思路,而不是靠删目录。
还有一个小技巧:Git命令的报错信息虽然英文居多,其实已经很直白了。遇到报错,先别急着复制到搜索引擎,自己读一遍报错信息,它通常会告诉你“哪里出了问题、怎么修复”。看懂报错是程序员的基本功,也是用Git时最值得培养的习惯。
8. 一个实战演练:把“概念+安装”串成完整的第一个Demo
理解了概念、装好了环境、配好了身份,最后当然要实战。我给入门读者设计了一个很小但能跑通完整的Demo,大家跟着做一遍,相当于把今天这篇内容消化掉大半。
第1步:创建项目目录并初始化仓库
bash复制mkdir my-git-demo
cd my-git-demo
git init
第2步:创建文件并提交第一个版本
用系统自带文本编辑器写一个 index.html,内容随意,放一段简单问候文字,然后:
bash复制git add index.html
git commit -m "feat: 创建首页基础结构"
第3步:修改文件并观察状态变化
把 index.html 里的内容改掉一句话,然后依次执行:
bash复制git status
git diff
git diff 会明确显示你改了哪一行。这个操作的意义在于让你真正“看见”Git是如何追踪变化的。
第4步:提交第二个版本
bash复制git add index.html
git commit -m "feat: 更新首页问候语"
第5步:回溯历史,感受版本控制的力量
执行:
bash复制git log --oneline
你会看到两条提交记录。想查看第一次提交时的文件内容?
bash复制git show <第一次提交的hash前几位>
想回到第一个版本?执行:
bash复制git checkout <第一次提交的hash前几位> -- index.html
此时工作区里的 index.html 已变回了第一版的内容。如果你后悔了,想找回刚才的版本,只要 git checkout master -- index.html 即可。整个过程不超过两分钟,但“后悔药”的效果会给你留下深刻印象。
这个Demo跑通了,你对Git的命令体系和对象模型就建立起了最基本的感知。下一阶段的路线图也非常清晰:学习分支的日常操作(branch、checkout -b、merge)、学习与远程仓库的互动(remote、clone、push、pull)、最后是Pull Request协作流程。这些内容都可以在我后续的文章里找到。
最后分享一点我个人的体验作为收尾:Git这东西,最大的门槛不在技术,而在心态。第一次用的时候觉得命令又多又绕,很多时候根本不知道为什么要用它;但真正坚持用上一两周,形成习惯之后,你就再也回不到“没有版本控制”的工作方式了。它会教你写代码时更有底气——任何实验性的改动,大不了回滚;也会教你在协作时更有条理——每一步变化都经得起追问。
学Git不需要天赋,只需要你动手。今天装好它、跑通第一个提交,这件事就成了一半。剩下的一半,按照我给你的路线慢慢走,每一步都会比上一步更顺。
