什么是 GitHub?非开发者的版本控制入门
GitHub 是一个存放软件项目代码及其完整历史的网站,让你可以查看每一次修改、撤销错误,并与其他人共同开发同一个项目。它建立在 Git 之上,Git 是一款免费软件,用于随时间记录项目文件的快照。Git 是保存历史的工具;GitHub 则是这些历史在线共享、备份和讨论的地方。
如果你用 AI 构建应用,GitHub 主要用于两件事:拥有一份代码副本,让它独立于你构建时所用的工具之外;以及把代码交给开发者,使用他们本来就习惯的格式。
用 AI 构建时为什么它很重要
AI 应用构建器会快速编写和修改大量代码,而并非每次修改都是改进。版本控制就是让你安心使用它的方式。
- 放心撤销。 每次保存的修改都是一个快照。如果 AI 弄坏了什么,你可以回到上一个正常的版本。
- 所有权。 保存在你自己 GitHub 账户中的代码,无论你更换工具、停止付费还是想听听第二意见,都仍然属于你。
- 与开发者协作。 几乎每位开发者每天都在使用 Git。一个仓库让他们可以审查 AI 写的内容、修复问题,并把改动送回来。
- 部署到其他地方。 许多托管平台可以直接从 GitHub 仓库部署。
一个日常类比:修订模式加共享云盘
可以把它想象成开启了修订模式、并存放在共享云盘里的文档。
- Git 就像修订模式:每次编辑都会被记录,包括是谁、何时、为什么修改,并且你可以回滚到任意版本。
- GitHub 就像共享云盘:文档在线保存,其他人可以获取副本,还有评论和审批的地方。
- 分支(branch) 就像另存一份名为“草稿 — 新定价部分”的副本,让你可以放心试验而不影响大家依赖的版本。如果试验成功,再把它合并回去。
它与普通文档的区别在于规模。一个应用包含数百个文件,而 Git 会一起跟踪所有文件,因此每个快照都是整个项目在某一时刻的状态。
你会遇到的 Git 与 GitHub 术语
| 术语 | 通俗含义 |
|---|---|
| 仓库(repository,repo) | 带有完整历史的项目文件夹 |
| 提交(commit) | 一次保存的修改快照,附带一条简短的说明信息 |
| 分支(branch) | 一条独立的工作线,让实验不会干扰主版本 |
| main | 主分支的常用名称,即正式上线的版本 |
| 合并(merge) | 把一个分支的修改并入另一个分支 |
| 合并冲突(merge conflict) | 两处修改动了同一行,需要有人选择保留哪一个 |
| 克隆(clone) | 下载仓库的完整副本,包括历史记录 |
| 推送 / 拉取(push / pull) | 把你的提交上传到 GitHub / 把他人的提交下载到本地 |
| 拉取请求(Pull request,PR) | 在 GitHub 上提议合并某个分支的页面,供人们审查和讨论修改 |
| 派生(fork) | 你在 GitHub 上对他人仓库拥有的一份自己的副本 |
| 议题(issue) | 附属于仓库的待办事项或缺陷报告 |
.gitignore | 列出 Git 永远不应记录的文件,例如 .env 密钥文件和下载的依赖 |
| GitHub Actions | 在 GitHub 上运行的自动化,例如在每个拉取请求上运行测试 |
有两点值得特别强调。第一,Git 历史按设计是永久保存的:如果密码被提交并推送,之后再在新提交中删除它,并不能把它从历史中移除。第二,提交说明的价值取决于它写得好不好。“修复两人同时预订时的重复计数”对以后很有帮助;“更新”则没有。
实例:把 AI 构建的应用交给自由开发者
你用 AI 应用构建器做了一个客户门户。它能正常运行,但你希望一位自由开发者帮你添加一个与会计软件对接的复杂集成。
- 把项目连接到一个新的私有 GitHub 仓库并推送。仓库现在保存了代码及其历史。
- 检查其中的内容。 在 GitHub 上打开仓库,里面不应有
.env文件,代码中也不应有 API 密钥。密钥应保存在平台的设置中,如需与自由开发者共享,应单独传递,参见环境变量与密钥。 - 邀请自由开发者作为该仓库的协作者,仅限此仓库。
- 他们在一个分支上工作,例如命名为
accounting-sync的分支,边做边提交,完成后发起一个拉取请求。 - 你审查这个拉取请求。 即使不读代码,你也可以阅读描述、查看哪些文件被修改,并在评论中提问。
- 满意后合并,然后把修改拉取回你的构建器,让你和 AI 从新版本继续工作。
整个过程中,你都可以准确看到改了什么,并在需要时撤销。这就是版本控制在一个工作流程中的全部价值。如果你还在考虑是否要请开发者加入,参见请开发者还是用 AI 构建。
常见错误与误解
- “GitHub 和 Git 是同一回事。” Git 不依赖 GitHub 也能使用;GitLab 和 Bitbucket 等替代方案同样托管 Git 仓库。
- “GitHub 会运行我的应用。” GitHub 只存储代码。要让公众访问应用,需要网站托管这一独立服务(尽管有些主机可以从 GitHub 部署)。
- 提交密钥。 这是最具破坏性、也最常见的错误。用
.gitignore排除.env文件,并且轮换任何曾被推送上去的密钥。 - 只有一个分支且没有说明。 个人实验时还可以,但请为提交写清楚的说明,并对任何有风险的改动使用分支。
- 同时在两处编辑。 如果你在 GitHub 和 AI 构建器中都修改代码,而切换前没有拉取同步,就会产生冲突。一次只在一个地方编辑,切换前先同步。
- 以为私有仓库就是所有内容的备份。 它保存的是代码,而不是数据库内容或上传的文件。这些需要单独备份。
向 AI 构建器提出的请求
- “添加一个
.gitignore,排除.env、依赖文件夹和构建输出。” - “编写一份 README,说明如何安装、需要哪些环境变量(仅列出名称),以及如何运行应用。”
- “添加一个
.env.example,列出所有变量名称,但不包含真实的值。” - “为每次修改使用清晰、具体的提交说明。”
这四项请求能让开发者几分钟内就接手这个仓库。若要把应用迁移到你自己的服务器,参见如何导出并自行托管 AI 构建的应用;若要在面向真实用户之前加固应用,参见如何把 AI 原型推进到生产环境。
GitHub 与 Mythex
Mythex 在每个套餐中都会为你保留历史:每次智能体成功完成一轮后,它都会保存一个检查点,即可以回退的 Git 快照。在 Pro 套餐中,你可以连接 GitHub,并针对自己的仓库推送或拉取项目,也可以把整个项目下载为压缩包;密钥和已安装的依赖会从导出内容中排除。这里的 GitHub 用于同步代码,而不是用于登录 Mythex。参见文档中的 GitHub、导出与导入,以及各套餐包含内容的定价页面。
常见问题
Git 和 GitHub 有什么区别?
Git 是一款免费软件,可以在任何电脑上记录项目文件的历史变更。GitHub 是一个由微软拥有的网站,它在线托管 Git 仓库,并提供拉取请求(pull request)、议题(issue)和自动化等协作工具。
用 AI 构建应用一定要用 GitHub 吗?
不一定。许多 AI 应用构建器会在产品内部为你保存历史记录。当你想要一份属于自己的代码副本、需要与开发者合作,或计划把应用托管到其他地方时,GitHub 才会变得有用。
GitHub 免费吗?
GitHub 提供免费套餐,包含公开和私有仓库,对大多数个人和小团队来说已经足够。付费套餐会增加团队管理和更多功能;具体内容请查看 GitHub 的定价页面。
我在 GitHub 上的代码会公开吗?
只有当你把仓库设为公开时才会。私有仓库只有你和你邀请的人可以看到。即使是私有仓库,也绝不要提交密码或 API 密钥。