
Github这个词你肯定听过。但当你真的打开 github.com看着满屏英文、一堆看不懂的按钮时第一反应多半是“这玩意儿到底怎么用”我身边不少想学编程的朋友都卡在这一步账号注册了首页刷了半天不知道下一步该干嘛最后默默关掉网页。这篇入门教程就是为这种情况写的。我会从零开始把 Github 是什么、怎么注册、怎么把第一份代码传上去、遇到报错怎么办都走一遍。不需要你有命令行基础跟着操作就行。目标是让你看完之后能独立完成“注册账号—建仓库—传代码—改代码—再传一次”这条最核心的链路。1. 先搞清楚Github到底是干什么的别急着注册很多人没弄明白就开始点按钮结果越点越慌。在注册之前先用几分钟把概念理顺后面你会省下大量时间。1.1 Git与Github的关系两分钟讲明白Git 和 Github 是两个东西但经常被混着提。打个比方Git 是一个装在电脑本地的“修改记录仪”它会记录你对文件做的每一次改动想回退到哪个历史版本都可以整个过程完全不需要联网。Github 则是把这个“记录仪”连上网络的社区平台把你的代码仓库放到云端别人能看、能复制、能参与修改。更直白一点Git 是工具Github 是网站。你在本地用 Git 管理代码又想把代码分享出去或者备份到云端这时候就把仓库推送到 Github 上。很多新手以为“学 Github 就是学这个网站”其实你真正要学的核心是 Git 的那几条命令网站本身只是展示和协作的窗口。为什么版本管理这么重要写代码不像写作文写错了能撤销。你改了一个功能第三天发现还是之前那版能跑如果没有历史记录只能靠 CtrlZ 碰运气。Git 把每一次提交做成一个存档点任何时刻都能跳回去这种安全感用过一次就回不去了。1.2 仓库、分支、提交三个绕不开的核心概念Github 界面上的英文很多但真正高频的核心概念就这几个仓库Repository一个项目一个仓库相当于一个带着修改历史记录的文件夹。仓库名会出现在网址里格式一般是“用户名/仓库名”比如 github.com/你的用户名/hello-world。提交Commit就是存档点。每次提交都要附一句说明告诉别人这次改了什么。Git 会把提交人、时间、改动内容全部记下来。分支Branch平行版本线。默认分支叫 main你可以从 main 开一条新分支做实验做完再把结果合并回去不影响主干。你在看别人仓库时还会遇到 Star、Fork、Issue、Pull Request 这些词。Star 是点赞收藏Fork 是把别人仓库复制一份到自己账号下Issue 是提问题或讨论Pull Request 是请求项目作者合并你的修改。对新入门的人来说用得最多的就是 Star 和 Fork先记住这两个就行。概念不需要背后面操作时会反复碰到慢慢就熟了。接下来进入实际操作。2. 注册账号与SSH密钥配置这是你走向顺畅的关键一步很多教程把注册一笔带过直接让你建仓库。但根据我带新人的经验注册环节埋了不少小坑而且现在 Github 已经不支持用账号密码直接操作仓库了这点必须先说明白。2.1 注册流程里容易被忽略的验证步骤打开 github.com点击右上角 Sign up填写用户名、邮箱、密码。有三个地方要特别注意用户名会变成你的主页地址github.com/用户名和仓库地址的一部分尽量用简短英文不要用中文、空格和特殊符号。取一个正式点的名字以后写简历、投开源项目都会用到。邮箱一定要用常用的、能长期访问的邮箱。注册后 Github 会发一封验证邮件点里面的链接完成验证。不验证的话部分功能会受限。密码建议用密码管理器生成因为之后你基本不会频繁手动输入它容易忘。注册完成后Github 还会让你做几道验证题目比如选择某个图案按提示操作就行。完成后你会进入一个类似新手引导的页面里面有一些学习任务建议先跳过我们直接进入正题。还有一个很多人问的点教程里总说“github账号密码”但现在 Github 已经淘汰了密码方式你需要用 SSH 密钥或个人访问令牌token来操作仓库。第二种方式每次都要复制粘贴字符串很麻烦。所以我推荐第一种SSH 密钥。2.2 SSH密钥配置为什么推荐 SSH 而不是 HTTPS先解释一下为什么会有两种方式。Github 上的仓库地址有两种格式HTTPShttps://github.com/用户名/仓库名.gitSSHgitgithub.com:用户名/仓库名.gitHTTPS 方式在每次 push 时都要认证以前输密码现在输 token体验很差。SSH 方式则是你在一台电脑上生成一对密钥——一把私钥留在本地一把公钥贴到 Github 账号上之后这台电脑的所有 Git 操作都自动认证不用再反复输入。相当于给电脑配了一把进门钥匙一次配置长期使用。生成密钥的方法在所有系统上通用。打开终端Windows 上用 PowerShellmacOS 和 Linux 上直接开终端输入ssh-keygen -t ed25519 -C 你的邮箱example.com这里 -t 指定加密算法-C 是备注。执行后会问你保存路径和密码直接按三次回车用默认配置即可。完成后你的用户目录下会出现一个 .ssh 文件夹里面有两个文件id_ed25519 和 id_ed25519.pub。前者是私钥千万别泄露后者是公钥可以随便贴到任何地方。查看公钥内容cat ~/.ssh/id_ed25519.pub复制输出的一整行以 ssh-ed25519 开头然后打开 Github 右上角头像 → Settings → 左侧找到 SSH and GPG keys → New SSH keyTitle 随便填比如“我的笔记本”把公钥粘进去点击 Add SSH key。如果系统提示 ssh-keygen 不是可用的命令说明电脑没装 OpenSSH 客户端。Windows 10/11 用户可以在“设置 → 应用 → 可选功能”里添加“OpenSSH 客户端”macOS 和 Linux 一般自带不用额外装。2.3 验证 SSH 连接是否成功配置完公钥回到终端执行ssh -T gitgithub.com第一次运行会提示是否确认连接输入 yes 回车。如果看到类似 “Hi 你的用户名! Youve successfully authenticated” 的提示说明认证成功可以放心使用了。如果提示 Permission denied (publickey)多半是公钥没粘贴对或者私钥文件路径不对重新回到 2.2 检查一遍。多台电脑都想用一个账号的话就在每台电脑上都生成一对密钥分别把公钥添加到同一个 Github 账号下全部都能正常使用不受影响。3. 建立第一个仓库把代码真正“推”上去密钥配好了现在开始建第一个仓库。这个环节是整条流程的核心也是最容易让新手懵圈的部分。我把它拆成网页端和命令行两部分来讲。3.1 在网页上创建仓库时那几个选项的含义登录 Github 后点击右上角的 号选择 New repository。你会看到一个表单需要填这些内容Repository name仓库名别用中文和空格用短横线连接单词比如 hello-world。Description项目说明可填可不填。Public / Private公开仓库所有人都能看见私密仓库只有你和被你授权的人能看见。学习阶段选 Private 也行想展示作品就选 Public。Add a README file是否同时创建一个说明文件。新手建议勾上这个文件会在仓库首页展示是别人了解你项目的第一入口。填好点击 Create repository一个空仓库就建好了。创建成功后页面会给出一段提示教你在本地已有项目的情况下怎么推送代码。很多新手直接跳过这段结果后面命令行操作时无从下手。我建议哪怕现在看不懂也先扫一遍体会一下整体流程。3.2 命令行推送从 git init 到 git push 的完整流程网页上建好仓库只是搭了个空壳真正的代码推送需要本地操作。先在电脑上随便建一个目录起名 my-first-repo里面放一个 index.html 或者 demo.py甚至一个 txt 文件都行目的是先跑通流程。打开终端进入这个目录cd ~/my-first-repo git initgit init 会把当前文件夹变成一个 Git 仓库执行后会出现一个隐藏的 .git 目录所有版本记录都存在这里。第一次提交前要先告诉 Git 你是谁否则提交会报错git config --global user.name 你的用户名 git config --global user.email 你的邮箱接着把文件加入暂存区并提交git add . git commit -m 我的第一次提交这里的 add 是把改动放进一个“暂存台”相当于告诉 Git“我准备提交这些文件”commit 才是真正生成存档点-m 后面跟的是这次提交的说明。说明要能简短描述这次改动例如“新增首页”或“修复登录 bug”。然后需要把当前分支名改成 main并关联远程仓库git branch -M main git remote add origin gitgithub.com:你的用户名/你的仓库名.git最后执行推送git push -u origin main第一次加 -u 是为了把本地的 main 分支和远程的 main 分支绑定以后你直接执行 git push 就能完成同步。执行完刷新一下仓库页面文件应该已经出现在 Github 上了。这一步是整条链路的核心建议反复跑几遍直到不看笔记也能熟练敲出来。我在指导时发现新手最容易犯的错误是忘记先 add 直接 commit或者没关联远程就直接 push。前者会提示 nothing to commit后者会提示 no configured push destination。解决办法很简单按顺序一步步来别跳步。3.3 网页端文件上传的功能边界与”文件夹上传“的正确解法如果电脑上还没装 Git只想起传几个小文件Github 网页也提供了上传入口。在仓库主页点击 Add file → Upload files把文件拖进去填一下提交说明点 Commit 就行。但这个方法有明确边界单个文件超过 50MB 就会警告超过 100MB 直接拒绝空目录传不上去文件数量多了容易卡死。至于“文件夹怎么上传”这个问题我几乎每周都会被问一次。网页端的拖拽上传其实支持包含文件夹的目录结构但空文件夹会丢失而且目录层级复杂时体验极差。更可靠的做法很简单本地用命令行整目录提交。git add . git commit -m 添加整个文件夹 git push命令模式解决的是本质问题——网页端只是单个文件的便捷入口命令行才是真正管理项目的方式。如果本地目录很深、文件很多优先命令行网页端作为偶尔应急的辅助就好。4. 新手最容易遇到的三类报错404、403、连接超时跑通一次流程之后你大概率会开始碰各种报错。这部分我直接把最高频的三类问题拿出来拆解包括报错原因和完整的排查思路。4.1 page not found 与 404仓库地址错了还是设置问题页面显示“Page not found”最常见的原因有几种网址里的用户名或仓库名拼错了。GitHub 的仓库路径区分大小写/User/repo 和 /user/Repo 是两回事。仓库设置成了 Private而你现在用的是另外一个账号或者在未登录状态下访问。私密仓库只有仓库主人和被邀请的协作者能看到。仓库路径层级不对。比如 README 里给出的链接写的是 /blob/master/README.md但仓库默认分支已经改成 main 了访问 /blob/master/ 就会 404。你 clone 了仓库本地开发没问题但想分享给别人时发现自己复制错了网址。排查顺序我一般建议先确认仓库名大小写和路径层级再确认账号登录状态最后检查仓库是否公开。如果前三项都没问题再看 README 里的旧链接是不是用了 master 分支名。GitHub 新创建的仓库默认分支是 main如果你看到很多老教程里的链接带 master改一下单词往往就能访问。4.2 forbidden 与权限报错SSH 密钥和分支保护push 代码时报权限错误信息比较多但根源通常就三类。第一类remote: Permission to 用户名/仓库.git denied to 另一个用户名。这表示你当前电脑已登录的 SSH 密钥属于另外一个账号而不是仓库的主人。解决办法是检查电脑 ~/.ssh 目录下当前的密钥文件确认它是否对应正确的账号。多账号用一台电脑时可以临时指定密钥文件或者干脆换一台干净的电脑操作。第二类Permission denied (publickey)。这说明 Github 没有识别到你的公钥或者这台电脑的私钥不在默认路径。去 Github Settings → SSH and GPG keys 检查公钥是否粘贴完整再确认本地 ~/.ssh 里是否有对应的私钥文件。第三类被拒绝推送到 main 分支。很多仓库把 main 设置成受保护分支不允许绕过代码审查直接强推。解决办法是新建一个分支开发然后发起 Pull Request让有权限的人审核合并。还有一个新手常犯的逻辑坑你要往别人的仓库提代码但不能直接 push。正确流程是先 Fork 到自己的账号然后 push 到自己的 Fork 上再发起 Pull Request。如果没有 Fork 直接 push会收到 permission denied——这是我在帮助新手时看到频率最高的操作错误之一。另外如果 push 时报 failed to push some refs原因是远程仓库已经有你本地没有的新提交你直接在旧版本基础上推当然会被拒绝。解决方式git pull --rebase origin main git push先把远程的更新拉下来接到你本地提交的后面然后重新推。rebase 这个参数不需要完全理解你只需要记住它比 merge 更干净不会留下一个多余的分叉历史。4.3 网络访问问题不折腾工具也能正常使用的方法每次聊 Github 一定绕不开访问速度的问题。不同地区、不同运营商差异非常大有人网页秒开有人转圈半天。这属于网络链路问题不是账号或代码问题。我的建议是先别折腾。命令行操作通常比网页稳定得多因为 git push 和 git clone 走的是 22 或 443 端口对带宽要求很低网页打不开的时候命令常常还能正常跑。下载比较大的仓库时可以加一个浅克隆参数git clone --depth 1 https://github.com/用户名/仓库名.git这个命令只提取最新一次提交体积小很多速度会快不少。如果只是想查看代码、跑个 demo浅克隆完全够用。如果只是网页访问慢可以尝试这几个操作换一种网络环境比如从公司 WiFi 切到手机 4G/5G修改电脑 DNS 为公共 DNS如 223.5.5.5、114.114.114.114或者避开访问高峰时段。很多人反馈晚 8 点后的访问体验明显下降早上会好很多。还有一个很实用的替代思路国内有正规的代码托管平台功能逻辑和 Github 基本一致。这里不展开推荐具体平台只说我实际用过的做法——很多平台提供“从 GitHub 导入仓库”的功能你把 GitHub 仓库链接粘过去就能在自己的账号下得到一份副本之后用这个平台的地址来 clone 和 push。Git 命令完全不变只是域名不同。对单纯想学 Git 工作流、或者希望更稳定访问的国内新手来说这种方案能省掉很多烦恼。最后强调一点完全没有必要为访问 Github 去安装那些来历不明的第三方工具。这类工具既不是官方出品又涉及你的账号权限账号安全风险很大。Github 官方文档没有推荐过任何此类方式遇到问题优先用上面的常规手段。5. 把Github当工具箱用项目评估、Copilot、Pages、仓库回退与更多流程和报错都跑通之后Github 对你来说就不再是“一个传代码的网站”了。它可以是一个学习工具库、一个自动部署平台、一个 AI 助手甚至可以当备份空间用。这一节挑几个新手能立刻上手的功能讲。5.1 如何快速判断一个开源项目值不值得用看到热门项目先别急着 Star。花两分钟做一次快速评估能帮你避开很多坑Stars代表收藏量是项目认可度的直观指标但高 star 不代表它适合你只代表它被很多人关注。最近提交点进 Commits 页面看最近一次提交时间。如果项目停更超过半年说明作者可能已经维护不动了遇到 bug 没人管。Issues 区看别人提的问题有没有人回复、多久能回复。社区活跃度比 star 数量更能反映项目是否靠谱。README 质量一个写清楚的 README 会告诉你“这是干什么的、怎么装、怎么用”如果连文档都敷衍后续使用也会麻烦。License如果你要拿去商用或修改必须看开源许可证类型。MIT、Apache 2.0 这类通常比较宽松GPL 则要求衍生作品也开源。新手建议从 star 数量比较高、文档完整、社区活跃的成熟项目入手别一上来就挑战那些刚起步的问题一堆的小项目。5.2 Copilot、Actions、Pages三个新手也能立刻上手的进阶功能GitHub Copilot 是官方推出的 AI 编程助手能在编辑器里根据上下文自动补全代码写注释、补测试、生成重复模板都非常快。很多新手拿它当“实时示例库”用这确实是个好思路——你在写代码时看它怎么补全相当于身边坐了个随时能给建议的同事。但要注意别盲目接受它生成的代码不理解的东西不要直接复制。AI 生成的代码也可能有 bug甚至包含容易忽略的安全漏洞。GitHub Actions 是自动化流水线。比如你每次 push 代码后自动跑测试、自动构建、自动发布。新手可以不用自己写 workflow先复用别人写好的模板点个按钮装上然后看它跑日志慢慢就理解了自动化是怎么回事。这个功能在部署领域特别常用尤其是部署静态博客。GitHub Pages 是个免费静态网页托管服务。你在仓库设置里打开 Pages选择源分支或者目录它就会生成一个 用户名.github.io/仓库名 的网址。很多人的个人博客就是这样落地的你听到的“Hexo 部署到 GitHub”原理就是先用 Hexo 把 Markdown 文章生成静态网页再把生成后的 public 目录推到仓库最后交给 Pages 对外服务。整个过程自动化之后你只需要关心写文章这一个动作。5.3 仓库回退和“只下载指定文件夹”的实用技巧很多人问“我把代码改坏了怎么退回之前的版本”这就是仓库回退问题。步骤分两种本地回退先用 git log 看提交历史找到想回到的那个提交号一串长哈希值然后git reset --hard 提交号--hard 会丢弃之后的修改并回到指定版本适合明确知道自己不想要后续改动的场景。但这条命令很危险会把工作区的未提交修改也一并丢掉操作前最好先备份或者改用 git reset --soft它只挪动指针不碰你的文件。远程回退本地回退成功后远程仓库还是新版本需要强制推送git push --force-with-lease origin main注意加 --with-lease 而不是直接用 --force它会在推送前检查远程分支是否还是你之前看到的状态避免覆盖别人的提交。这条命令只建议在自己独立维护的分支上使用协作分支千万别乱来。最后说“只想下载某个仓库里的一个子文件夹”怎么办。网页端没办法直接只下载某个子目录的 zip 包但有几种办法把整个仓库浅克隆下来然后删掉不要的部分或者用 svn 命令做稀疏导出前提是你本地装了 svnsvn export https://github.com/用户名/仓库名/trunk/需要下载的目录这算是很多老手才知道的小技巧。另外很多知名项目会在页面右侧提供 Releases 区里面放的是编译好的安装包或压缩包你甚至不需要会 Git直接点下载就行这也是平时“从某个仓库下载工具”最常见的入口。我在给朋友讲 Github 时最常听到的一句话是“命令我抄下来了但下次打开还是不知道从哪开始。”根据我的经验卡住不是因为笨而是心里没有“本地—暂存—提交—远程”这条完整链路。只要你亲手完成一次 git add、commit、push再遇到任何报错你会下意识知道问题出在哪一步。Github 的功能远不止这些但入门阶段千万别追求学全工作是学不完的。先让自己拥有一个能展示作品的仓库后续的东西都会自然顺起来。这篇教程先到这里去动手推一个仓库试试踩了坑回来对照第四章排查基本都能解决。