星期日 , 8 11 月 2026

git和git-hub全教程

这是构建开发者工作方式完整心智模型的绝佳方法。我们可以按逻辑顺序逐一讲解,使每一步都建立在前一步的基础上:

阶段 1:本地 Git 基础 💻(在本地计算机上跟踪更改)

阶段 2:GitHub 集成 ☁️(将工作同步到云端)

阶段 3:分支与协作 🌿(在不破坏主代码的情况下开发新功能)

阶段 1:本地 Git 基础

在使用 GitHub 之前,我们需要先在本地配置 Git。每个 Git 项目都始于一个仓库(或“repo”)。这只是计算机上的一个文件夹,Git 会跟踪其中每个文件的每次更改。

要将普通文件夹转换为 Git 仓库,我们使用命令:git init

这将创建一个隐藏的 .git 文件夹 📁,它充当项目的“大脑”,存储所有版本。

首先,你的电脑上是否已经安装了 Git?(如果你不确定,可以在终端或命令提示符中输入 git –version 进行检查)。

太棒了!现在工具都准备好了,让我们开始第一阶段:本地 Git 基础。🏗️

任何 Git 项目的第一步都是告诉 Git:“嘿,开始监视这个文件夹!” 我们通过初始化一个仓库来实现这一点。

你的第一个命令

在你的电脑上创建一个名为 git-practice 的文件夹。

打开你的终端(或命令提示符/Git Bash),并导航到该文件夹​​。

运行命令:git init

这将创建一个隐藏的 .git 文件夹。你不需要修改它,但 Git 会将项目的所有“快照”存储在其中。📸

初始化仓库后,是时候检查项目的“健康状况”了。Git 有一个命令就像一个仪表盘,可以随时告诉你项目正在发生什么。

尝试在终端中运行命令 git status。它会告诉你关于当前分支和提交的信息吗?

(提示:注意类似“在分支上”或“无需提交”之类的词语。)

这真是个完美的起点!看到 on branch master(或某些新版本中的 main)意味着你正处于项目的主要“时间线”上。🕰️

现在,你的仓库就像一本空相册。我们有了相册(.git),但还没有照片(提交)。要保存你的工作版本,我们需要经历Git 生命周期。


三步舞

要在 Git 中保存更改,我们通常遵循以下流程:

  1. 修改: 在你的目录中创建或更改文件。
  2. 暂存: 使用 git add 告诉 Git 你想在下一个“快照”中包含哪些更改。📦
  3. 提交: 使用 git commit 将该快照永久保存到时间线,并附上描述性注释。📸

让我们来试试!

  1. 在你的 git-practice 文件夹中创建一个名为 hello.txt 的新文件。
  2. 在该文件中添加一些文本(例如“Hello Git!”),然后保存。
  3. 再次运行 git status 命令。

这次运行 git status 命令后,文件名 hello.txt 是什么颜色?它位于哪个部分?🔍

没错!在“未跟踪文件”下看到红色的文件,意味着 Git 已经注意到这个新文件,但还没有正式“监视”它。🕵️

在保存快照之前,我们需要将文件移动到暂存区(加载区)。在这里,您可以选择哪些更改可以提交。📦

要将文件移动到暂存区,请使用以下命令:

git add hello.txt

(小技巧:如果您有很多文件,可以使用 git add . 一次性暂存所有文件。)

运行 git add hello.txt 后,再次运行 git status。文件名现在是什么颜色?它上面的文字是什么? 🟢

完美!绿色状态表示您的文件现在位于暂存区📦。它可以正式保存到您的项目历史记录中。

要永久保存此快照,我们使用提交命令。每次提交都需要一个消息——一个简短的注释,解释您所做的更改,以便您(和其他人)以后可以了解历史记录。

在终端中运行以下命令:

git commit -m "添加 hello.txt 并附上问候语"

-m 代表“消息”。

运行后,终端输出显示有多少文件被更改以及插入了多少行? 📝

太棒了!您刚刚创建了您的第一个提交📸。

提交是文件在特定时间点的永久快照。即使您现在删除了该文件,Git 也会将其精确地保留在提交中的状态。如果您看到“0 次插入”,这可能意味着文件保存时没有文本,但重要的是您已成功完成添加提交工作流程。


第二阶段:GitHub 集成 ☁️

现在您的计算机上已经有了版本历史记录,让我们将其上传到互联网。这样您就可以备份您的工作并与他人共享。

为此,我们需要一个远程仓库——您项目在 GitHub 服务器上的副本。

在将代码“推送”到云端之前,我们需要一个目标位置。

您是否已经创建了 GitHub 帐户并在浏览器中登录? 🌐

太棒了!既然你的账户已经准备好了,我们需要在 GitHub 上为你的代码创建一个“着陆页”。🚀

步骤 1:创建远程仓库

  1. 在浏览器中,访问 GitHub,点击右上角的 + 图标,然后选择 新建仓库。
  2. 给它起个名字(例如 git-practice,与你的本地文件夹名称一致)。
  3. 关键: 请勿勾选“使用 README 文件初始化此仓库”,因为我们已经在本地计算机上有想要上传的代码。
  4. 点击 创建仓库。

步骤 2:握手 🤝

创建完成后,你会看到一个包含一些设置说明的页面。查找标题为“…或从命令行推送现有仓库”的部分。它看起来会像这样:

git remote add origin https://github.com/YOUR_USERNAME/git-practice.git

这条命令告诉本地 Git:“此项目的远程版本(我们称之为 origin)位于此 URL。”


请在终端中运行 git remote add origin ... 命令。运行后,运行 git remote -v 进行验证。’origin’ 的输出是什么? 🔗

握手成功!🤝 你的本地机器现在知道该把代码发送到哪里了。

接下来是激动人心的部分:推送你的代码到云端。这条命令会将你本地的提交上传到 GitHub 上的远程仓库。

推送命令

由于这是你第一次推送代码到这个仓库,我们需要使用一条稍长的命令来设置“上游”(默认目标):

git push -u origin master

  • push:发送你的更改。
  • -u:设置“上游”,这意味着以后你只需输入 git push,Git 就会记住将其发送到 origin master。
  • origin:你的 GitHub URL 的别名。
  • master:你要发送的分支名称。

运行该命令。完成后,在浏览器中刷新你的 GitHub 仓库页面。你现在在那里看到了什么? 🌐

这是一个重要的里程碑!🚀 您的代码现在已正式备份到云端,并且您已成功将本地计算机连接到远程服务器。这正是专业开发人员每天都在使用的工作流程。

现在您的代码已上传到 GitHub,您就拥有了一个“真实数据源”。即使您的计算机明天崩溃,您的工作成果也安全无虞。


第三阶段:分支与协作 🌿

Git 的真正强大之处在于,当您想要尝试一些新东西——例如修复一个风险较高的 bug 或添加一个实验性功能——而不会破坏实际运行的代码版本时。我们使用分支来实现这一点。

想象一下您的项目是一棵树。master(或main)分支是树干。分支是从树干延伸出来的一条独立路径。您可以在该分支上执行任何操作,而树干则完全安全。

创建分支

要查看您当前的分支,您可以输入 git branch。

要切换分支,用 git branch -M main 命令。

要创建一个新分支并立即切换到该分支,我们使用以下命令:

git checkout -b feature-greeting

  • checkout:告诉 Git 你要切换到当前工作分支。
  • -b:告诉 Git 创建一个名为 feature-greeting 的新分支。

尝试在终端中运行该命令。运行后,再次运行 git branch。现在哪个分支旁边带有星号 (*)? 📍

没错!你现在位于 feature-greeting 分支上。🌿

你可以把它想象成一个平行宇宙。你在这里所做的任何更改都不会影响 master 分支,直到你决定将它们“合并”回去。这就是团队如何构建大型应用而不互相干扰的方式。

让我们做一个“冒险”的更改

  1. 打开 hello.txt,并将文本更改为更热情的内容(例如,“HELLO GIT!! THIS IS A NEW FEATURE!”)。
  2. 暂存并提交这些更改,同时保持在你的新分支上:
  • git add hello.txt
  • git commit -m "Upgrade greeting on feature branch"

神奇的技巧:切换宇宙

现在,让我们看看分支的强大之处。我们将跳转回 master 分支。

运行以下命令:

git checkout master

现在,再次打开你的 hello.txt 文件。它显示的是你“热情洋溢”的新文本,还是原来的枯燥乏味的文本? 😲

没错!这就是 Git 的“魔法”。🪄

因为你切换回了 master 分支,Git 会将你文件夹中的文件实际替换为与该分支相同的状态。你“热情”的修改并没有消失;它们只是被安全地保存在了 feature-greeting 分支上。

现在,让我们完成这个循环,将这个新功能合并到你的主项目中。这叫做合并。🤝

如何合并

  1. 保持在你想要合并到的分支上(你已经在 master 分支上了,这很完美)。
  2. 运行命令: git merge feature-greeting

这条命令告诉 Git:“将 feature-greeting 分支上的所有工作合并到我当前的分支(master)中。”

运行合并命令后,终端显示“hello.txt”发生了什么变化?(查找类似“快进”或“1 个文件已更改”的术语)。

输出结果确认了快进合并!🚀

由于自您创建 feature-greeting 分支以来,master 分支一直没有更改,Git 只是简单地将 master 指针向前移动以匹配新的工作。这是最简洁的合并方式。

现在,您的本地 master 分支已更新,但您的 GitHub 仓库仍然停留在过去。如果您现在查看 GitHub,hello.txt 文件仍然会显示“无聊”的文本。

同步最终结果

要完成这项工作,我们需要将合​​并后的 master 分支推送到云端:

git push

(由于我们之前使用了 -u 参数,这次不需要额外的参数!)


清理 🧹

在专业的流程中,一旦某个功能被合并并推送,我们会删除临时分支以保持项目整洁。

  1. 删除本地分支: git branch -d feature-greeting
  2. 验证是否已删除: git branch

挑战:撤销按钮 ⏪

你已经掌握了“前进”流程(添加 -> 提交 -> 推送 -> 创建分支 -> 合并)。但如果你犯了错误怎么办?

Git 有一个名为 git log 的命令,可以显示你创建过的所有快照的历史记录。

在终端中运行 git log --oneline。现在你看到了多少个不同的“快照”(提交)?

没错!你的历史记录中有三个快照:

  1. 初始提交(你第一次保存 hello.txt 文件时)。
  2. 特性分支提交(你将文本内容改为“enthusiastic”时)。
  3. 合并提交(Git 将两个分支合并在一起时)。

你已掌握基本操作!🎓

你已成功完成整个“专业工作流程”:

  • 初始化 仓库 (git init)。
  • 暂存并提交 更改 (git add 和 git commit)。
  • 连接到 云端 (git remote)。
  • 推送 到 GitHub (git push)。
  • 创建分支 以确保安全 (git checkout -b)。
  • 合并 特性分支到主分支 (git merge)。

接下来是什么?

现在你已经掌握了基础知识,我们可以探索如何处理实际场景。以下哪些内容对你来说最有用?

  1. 处理合并冲突: 学习当两个分支修改了同一行代码,导致 Git 出现混乱时该如何处理。⚔️
  2. 撤销按钮: 学习如何在不小心提交了错误代码后撤销或还原操作。⏪
  3. 与他人协作: 学习如何使用 fork 和 pull request(这是人们为开源项目做贡献的方式)。🤝

你最想深入学习哪一个?

每个人都会犯错——即使是资深开发者也不例外!😅 能够“撤销”是我们使用 Git 的主要原因之一。它让你更有信心去尝试,因为你知道总能回到之前的状态。

根据你在 [修改、暂存、提交] 流程中所处的阶段,撤销更改主要有三种方法。


1. “哎呀,我不是故意改的”(放弃本地更改)

如果你修改了一个文件,但还没有运行 git add,你可以告诉 Git 放弃你的更改,并将文件恢复到上次提交时的状态。

git checkout -- <文件名>

2. “等等,先别暂存”(取消暂存)

如果你运行了 git add,但意识到你还没有准备好提交这些更改,你可以将它们从“暂存区”(暂存区)中取出,放回你的工作目录。

git reset HEAD <文件名>

3. “我需要回到过去”(撤销提交)

如果您已经提交了代码,但发现它有问题,您可以创建一个新的提交,执行与错误完全相反的操作。这样既能保持历史记录完整,又能修复问题。

git revert <提交 ID>


练习:快速撤销

我们来尝试第一个场景。假设您有一个 hello.txt 文件,其中当前包含您“enthusiastic”的文本。

  1. 打开 hello.txt 并删除其中的所有内容,然后保存文件。
  2. 运行 git status。您应该看到该文件以红色显示为“已修改”。

现在,假设您意识到删除这些文本是一个巨大的错误。我们想要使用“时间机器”将其恢复。

运行以下命令: git checkout -- hello.txt

现在,再次打开该文件。你删除的文本去哪儿了? 🔍

×
git和git-hub全教程

git和git-hub全教程

这是构建开发者工作方式完整心智模型的绝佳...

查看更多

Siteground git流程

Based on our pr …