资讯详情

The Odin Project 课程:Git 基础工作流实战指南——从创建仓库、克隆到提交推送

📅 2026/9/15 21:43:18 | 华诺云谱 👁 阅读
The Odin Project 课程:Git 基础工作流实战指南——从创建仓库、克隆到提交推送
The Odin Project 课程Git 基础工作流实战指南——从创建仓库、克隆到提交推送【免费下载链接】curriculumThe open curriculum for learning web development项目地址: https://gitcode.com/GitHub_Trending/cu/curriculum本指南以 The Odin Project 开放课程仓库中 Git 基础git_basics 一课为骨架系统讲解日常开发中占用率高达 70%80% 的Git 基础工作流在 GitHub 上创建仓库、将仓库克隆到本地、用git status/git add/git commit/git log管理快照以及用git push把本地提交推送到远程。读完本篇你将能独立完成本地编写代码 → 分阶段暂存 → 提交快照 → 推送 GitHub的完整闭环并掌握原子提交、提交信息规范等能直接提升协作质量的最佳实践。一、为什么这套工作流值得先掌握在进入命令之前先建立两个核心概念Git 是什么、GitHub 又是什么。这两个概念在配套课程 Git 与版本控制入门 中有详细论述这里只提取与工作流直接相关的要点Git 是运行在本地机器上的版本控制系统version control system。文本编辑器的保存只记录单个文件的全部内容而 Git 的保存记录的是文件与目录的差异differences并保留每一次保存的历史记录。这意味着你可以随时回看项目如何一步步成长、恢复过去某个时间点的文件状态。GitHub 是存放代码项目的远程remote存储设施。本地用 Git 管理联网后用git push把项目推送到 GitHub实现展示作品集与团队协作。理解了本地 Git 管历史、远程 GitHub 管存放的分工之后下面这套基础工作流就是连接两者的日常操作。二、动手前准备检查版本与默认分支开始前有两项一次性配置直接关系到后面每一步操作是否符合预期确认 Git 版本不低于 2.28。GitHub 已更改默认分支的命名方式较新的 Git 才能正确支持以main作为默认分支。检查命令git --version把本地 Git 的默认初始分支设置为main。执行后没有任何输出即表示成功git config --global init.defaultBranch main关于从master到main的迁移背景可参见本仓库课程 使用 Git 的现实世界技巧 中关于默认分支的说明。需要强调这里设置的是新初始化仓库的默认分支名并不会改动已有仓库的分支。三、在 GitHub 上创建远程仓库前提已完成 GitHub 账号注册与 Git 安装配置对应课程见仓库中的 设置 Git。从 GitHub 首页右上角点击按钮选择New repository。如果视口较窄导致按钮被隐藏可点击右上角头像该按钮会出现在用户名旁边。在仓库名称repository name输入框中填写git_test勾选 Add README选项——它会自动在新仓库中生成一个README.md文件最后点击页面底部的Create repository按钮。创建完成后会跳转到新仓库页面。点击绿色的Code按钮位于当前分支显示按钮的右侧通常显示main在Clone区域选择SSH选项并复制下方的地址。注意必须点击 SSH 选项。如果复制出来的地址形如https://github.com/USER-NAME/REPOSITORY-NAME.git说明你选中的是 HTTPS而不是这里要求的 SSH。# SSH 形式正确 git clone gitgithub.com:USER-NAME/REPOSITORY-NAME.git # HTTPS 形式本课程不采用 https://github.com/USER-NAME/REPOSITORY-NAME.git四、把远程仓库克隆到本地在本地命令行中先为所有 Odin 项目创建一个统一存放目录repos位于主目录~下再进入该目录mkdir repos cd repos/提示不同操作系统下~可能代表/Users/你的用户名或/home/你的用户名不确定时先执行cd ~回到主目录参考仓库中的 命令行基础。接着用git clone加上上一步复制的 SSH 地址把 GitHub 上的git_test仓库完整下载到本地git clone gitgithub.com:USER-NAME/REPOSITORY-NAME.git克隆完成后验证本地与远程是否成功建立连接。进入下载下来的git_test目录执行cd git_test git remote -v预期输出如下USER-NAME是你的 GitHub 用户名origin gitgithub.com:USER-NAME/git_test.git (fetch) origin gitgithub.com:USER-NAME/git_test.git (push)这段输出展示了两条信息第一行与第二行分别记录了**拉取fetch与推送push**所使用的远程仓库 URL即你在 GitHub 上创建的仓库地址行首的origin是这条远程连接的名称它既是默认值也是业界惯例。它完全可以被命名为 party-parrot 或 dancing-banana——只是origin成了约定俗成的默认叫法。origin这个概念在后续推送git push origin main中还会再次出现其深层原理可参考 深入理解 Git 与 远程仓库协作 两课。五、基础工作流快照的三步走Git 保存文件采用两阶段two-stage系统先把变更加入暂存区staging area再一次性提交commit成快照。暂存区可以理解为等待室——所有想进入本次提交的变更先在这里集合。5.1 创建一个新文件并观察状态在git_test目录下创建一个新文件touch hello_world.txt执行git status查看仓库状态。输出中hello_world.txt会以红色文本显示并出现在名为Untracked files的段落中——意思是该文件尚未被 Git 跟踪也还没有进入暂存区。5.2 加入暂存区git addgit add hello_world.txt再次执行git status此时文件变为绿色出现在名为Changes to be committed的段落中表示它已经进入暂存区。5.3 提交快照git commitgit commit -m Add hello_world.txt提交后再次运行git status输出应显示nothing to commit, working tree clean意为没有待提交的内容工作树是干净的你的变更已经成为一条提交记录。两个常见的提示信息需要正确理解如果看到upstream is gone不必担心这只说明克隆下来的仓库当前还没有分支建立上游关联在完成后续步骤后会自动消失如果看到Your branch is ahead of origin/main by 1 commit意思是你的本地快照比远程仓库新了 1 条提交——这正是后面要git push上传的内容。5.4 查看提交历史git loggit log输出中会看到刚才那条Add hello_world.txt提交包含提交者author与提交的日期时间。如果终端卡在底部显示(END)的界面按q键退出即可。六、修改文件让工作流转起来真实开发中文件几乎总是不断变化下面用修改README.md演示修改 → 暂存 → 提交的完整循环。用编辑器打开仓库。如果使用 Visual Studio Code可直接在仓库目录下执行code .若提示command not found: code请先按 命令行基础 中从命令行打开 VS Code一节的指引配置。在README.md末尾新增一行文本Hello Odin!保存文件VS Code 未开启自动保存时按CtrlSMac 为CmdS。回到终端VS Code 内置终端可用Ctrl/kbd 调出执行git status。注意输出与之前创建hello_world.txt时的区别这次README.md 出现在名为Changes not staged for commit的段落中。该段与 Untracked files 含义类似——文件有改动但尚未加入暂存区。把README.md加入暂存区git add README.md再次运行git statusREADME.md以绿色显示在 Changes to be committed 中。而hello_world.txt不会出现因为它自提交以来没有被修改过。修改hello_world.txt保存后暂存。此时可以体验一个常用快捷方式——用git add .把当前目录及其所有子目录中的变更一次性加入暂存区git add .再执行git status此时所有变更都应处于暂存区中。提交暂存区中的所有文件并附上描述性信息git commit -m Edit README.md and hello_world.txtgit status再次显示 nothing to commit。最后用git log查看提交历史现在应该能看到三条提交记录。七、推送工作到 GitHub至此本地历史已经领先于远程仓库把它们上传到开头创建的 GitHub 仓库git push origin main由于当前只使用main一个分支、也只使用origin一个远程也可以简写为git push以节省按键。关键排错提示如果推送时收到Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.的报错说明你在克隆时误用了 HTTPS 而不是 SSH。解决办法是参考远程仓库切换指引把远程 URL 从 HTTPS 改为 SSH再重新推送。推送完成后执行最后一次git status预期输出Your branch is up to date with origin/main. nothing to commit, working tree clean刷新 GitHub 仓库页面即可看到刚刚从本地推送上来的README.md与hello_world.txt。避免直接在 GitHub 上编辑刚上手时看到 README 里有错别字很容易顺手在 GitHub 网页上直接修改。这一阶段请务必避免直接编辑 GitHub 会制造本地与远程历史的分叉解决它需要更高级的 Git 知识本课程后续会覆盖。现阶段坚持本地改 → 提交 → 推送的单一流向是最稳妥的做法。八、命令速查表与语法记忆法以下命令值得收藏并逐步背熟远程仓库相关git clone gitgithub.com:USER-NAME/REPOSITORY-NAME.git—— 克隆远程仓库到本地git push或git push origin main—— 推送本地提交到远程当前场景下二者等价工作流相关git add .—— 把当前目录及子目录的所有变更加入暂存区git commit -m A message describing what you have done to make this snapshot different—— 把暂存区内容提交成一条快照状态与历史相关git status—— 查看工作树与暂存区状态git log—— 查看提交历史记忆诀窍是掌握 Git 的基础语法程序 | 动作 | 目的地program | action | destination命令解析git add .git|add|.其中.代表当前目录下的所有内容git commit -m messagegit|commit -m|messagegit statusgit|status| 无目的地九、Git 最佳实践原子提交Atomic Commits工作流跑通之后要刻意培养两个习惯原子提交以及利用原子提交写出对协作者更有价值的提交信息。本仓库专门设有 提交信息规范 一课这里先给出核心要点原子提交是指一次提交只包含与程序某一个功能或任务相关的变更。这样做的两个主要原因便于回退如果某处改动引入了问题可以只回退那一个具体变更而不会牵连其他无关改动利于撰写提交信息变更范围聚焦了提交信息自然清晰可写。Git 不只对团队协作有用独立开发时同样重要——未来回看旧代码时你会越来越依赖自己的提交历史。随着项目复杂度上升掌握历史重写git commit --amend、git rebase、git reset、分支即指针等进阶知识将成为必需品这些内容对应本仓库 深入理解 Git 一课而涉及远程历史改写如git push --force的危险性与git push --force-with-lease的安全替代可查阅 远程仓库协作。十、更换 Git 提交信息编辑器默认情况下不带-m参数执行git commit会打开 Vim 编辑器对初学者不太友好。把默认编辑器换成 VS Code 是个一劳永逸的选择git config --global core.editor code --wait执行后终端不会有任何确认输出这是正常的。配置完成后你有两种提交方式git commit -m your message here一条命令直接写完提交信息git commit自动打开一个新的 VS Code 标签页可以在多行中撰写更详细的提交信息主题行 正文用空行分隔——这是 提交信息规范 中强烈推荐的最佳实践保存并关闭标签页后终端会显示你的提交信息与变更摘要。值得注意的是本仓库 提交信息规范 一课还补充了两条实用约束提交信息的主题行建议不超过 72 个字符使用主动语态如 Fix card generator避免 saved、updated 这类含糊表述。此外把 Git 提交信息编辑器设置为 VS Code 后还能借助拼写检查插件与每行字符数显示更容易写出规范的多行提交信息。十一、知识自检以下问题覆盖了本课全部核心知识点可逐条自查如何在 GitHub 上创建一个新仓库如何把 GitHub 上的仓库复制克隆到本地远程连接的默认名称是什么解释git push origin main中origin的含义。解释git push origin main中main的含义。解释 Git 保存文件的两阶段系统。如何查看当前仓库的状态如何把文件加入暂存区如何提交暂存区中的文件并附上描述性信息如何把本地变更推送到 GitHub 仓库如何查看之前所有提交的历史记录继续深入本篇对应课程位于仓库 git/foundations_git/git_basics.md完整的 Git 学习路径如下前置概念Git 与版本控制入门提交信息规范提交信息commit_messages进阶原理深入理解 Git历史重写与指针远程协作远程仓库与强制推送的边界实战应用在真实世界中使用 Git值得一提的是本仓库本身就是用 Git 工作流维护的开放课程课程文件经过 markdownlint 的自动化校验见仓库根目录 package.json 中的lint/fix/test脚本每一次课程修订都以规范的提交记录在案。你在学习本工作流时产出的每一次git commit都在练习未来雇主会在你的 GitHub 上查看的那种可读的提交历史。【免费下载链接】curriculumThe open curriculum for learning web development项目地址: https://gitcode.com/GitHub_Trending/cu/curriculum创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。