跳转到内容

把项目保存到 GitHub

要点用 MonstarX 的 GitHub App 一键连接 GitHub(不需要令牌,由你选择仓库),然后点击项目顶部栏中的 GitHub,新建一个仓库或关联已有仓库。MonstarX 会先推送整个项目,之后把它做的每次修改都提交上去,并把你在 GitHub 上的提交拉取回来。导入的应用会同步到 monstarx 分支,你自己的分支永远不会变动。

GitHub 是开发者存放代码的地方,会记录每一次修改的历史。把 MonstarX 项目关联到一个 GitHub 仓库(GitHub 上的项目文件夹)后,两边会双向保持同步:MonstarX 构建的内容会作为提交推送到仓库,你或开发者在仓库中提交的内容也会同步回 MonstarX。

如果开发者想在自己的编辑器里改代码,或者你的公司把所有代码都放在 GitHub 上,又或者你从 GitHub 部署应用(比如 Railway 就是这样),这项功能会很有用。

GitHub 只需为整个 MonstarX 账户连接一次,可以在 设置集成 中连接,也可以通过任意项目中的 GitHub 按钮连接。最简单的方式是使用 MonstarX 的 GitHub App:不需要创建或粘贴令牌,并且由你决定 MonstarX 能访问哪些仓库。

  1. 点击 连接个人 GitHub 账户。

  2. GitHub 会打开,询问要把应用安装在哪里。选择 你的个人账户(不要选组织)。

  3. 选择 MonstarX 可以使用哪些仓库:All repositories,或者 Only select repositories 并勾选你想要的仓库。之后可以在 GitHub 上修改。

  4. 点击 Install,GitHub 要求确认时再点击 Authorize。

  5. 回到 MonstarX 后,卡片会显示 已连接 · GitHub App。

关于 GitHub App,有几点需要了解:

  • 无需组织审批。 它只安装在你的个人账户上。如果你不小心选了某个组织,MonstarX 会请你改为安装到个人账户后再试一次。
  • 新仓库会创建在你的个人账户中。 即使你选择了 Only select repositories,MonstarX 也始终能访问它自己创建的仓库。
  • 你选择的仓库就是访问范围。 要关联已有仓库,它必须是你授权给这个应用的仓库之一。可以在 GitHub 的已安装应用设置中添加更多仓库。
  • 访问凭证有效期很短,并会自动续期,而且加密保存,永远不会发送到你的浏览器。

如果你愿意,还有另外两种方式:

方式适用情况
权限受限的个人仓库(在设置中为 以有限权限连接个人仓库)你希望 MonstarX 通过 个人访问令牌(在 GitHub 上为特定用途创建的一种密码)只访问某一个仓库。创建一个细粒度令牌,将个人账户设为资源所有者,只选择那个仓库,并授予 Contents: read and write 权限。请先在 GitHub 上创建好仓库,因为这种令牌无法创建新仓库。
改用 GitHub 授权你希望推送到你所属组织的仓库。GitHub 常规的授权页面可能包含这些组织的访问权限,所以允许之前请仔细查看。

连接后,卡片会显示连接方式(GitHub App、通过 GitHub 登录 或 个人访问令牌),并列出 MonstarX 持续同步的每个仓库,以及各自上次同步的时间和同步方式(自动 或 手动)。之后用其他方式重新连接,会替换掉原来的连接;已关联的仓库会保持关联。

  1. 打开项目,点击顶部栏中的 GitHub。(项目的 设置导出 中的 保存到 GitHub 下也有这个入口。)

  2. 如果你的账户还没有连接,可以直接在这里连接。

  3. 选择 新建仓库 或 已有仓库:

    • 新建仓库:选择 所有者(你自己或你所属的某个组织),输入 仓库名称;除非你想让所有人都能看到代码,否则保持勾选 私有仓库,然后点击 创建仓库并推送。
    • 已有仓库:输入 owner/repository 或粘贴仓库的 github.com 地址,可选填 分支(留空则使用默认分支),然后点击 关联并同步。你的账户需要有推送到该仓库的权限。
  4. MonstarX 会把整个项目推送为一个可直接部署的仓库。同步完成后,GitHub 按钮上会出现一个绿点。

新仓库从一次提交开始:“Initial commit from MonstarX”。在已有仓库中,项目会提交到该分支的最新提交之后,MonstarX 不管理的文件(比如 LICENSE、CI 工作流、文档)永远不会被改动。

和 导出 得到的内容一样:应用的代码、MonstarX 的框架文件、运行和部署所需的配置、数据库迁移文件、应用所需密钥的名称列表(绝不包含密钥的值),以及一个 README。

有些内容永远不会推送到 GitHub:

  • 密钥的值、应用的 数据库记录 和 上传的文件 都保留在 MonstarX 上。
  • 从电子表格导入的记录 永远不会被推送,因为仓库可能是公开的,而这些是你客户的信息。
  • 二进制文件和超过 1 MB 的文件 会被跳过,并列在同步日志中。

开启 自动推送每次更改 时(默认开启),MonstarX 会在以下时候同步:

  • 每次请求修改了应用的文件之后,提交信息就是你的请求;
  • QA 自动修复之后;
  • 恢复某个版本之后;
  • 在代码视图中保存或删除文件之后。

GitHub 菜单中的 立即同步 可以随时推送和拉取。如果你更想手动同步,可以关闭自动推送。

有人在 GitHub 上修改了代码会怎样?

Section titled “有人在 GitHub 上修改了代码会怎样?”

像平常一样在 GitHub 上提交即可。下次同步时,MonstarX 会把修改拉取到项目中:

  • 应用自身文件(src/、public/、migrations/ 和 README.md)的修改会同步到 MonstarX。预览会更新,新的数据库迁移会执行,“版本”中会出现一个名为 来自 GitHub: 加提交标题的版本。
  • 聊天中会出现一张卡片,比如“已从 GitHub 拉取 3 个文件”,列出这些文件,让你和 MonstarX 的构建助手都知道改了什么。
  • 对 MonstarX 框架文件(比如 package.json 或配置文件)的修改会留在 GitHub 上,直到 MonstarX 自己下次修改该文件。
  • 如果同一个文件在 两边 都改了,MonstarX 会保留自己的版本,而你的修改会保留在 GitHub 的历史记录中。卡片会标注“两边均有更改,已保留 MonstarX 的版本”。

关联后,GitHub 菜单会显示什么?

Section titled “关联后,GitHub 菜单会显示什么?”
  • 仓库、它的分支,以及它是 私有 还是 公开。
  • 上次同步的时间(几分钟前 已同步),或者显示 上次同步失败 及原因。
  • 立即同步 和 打开仓库。
  • 自动推送每次更改。
  • 近期同步:最近 5 次同步,每次都附有对应的提交。
  • 取消关联仓库:停止同步。仓库会保留在 GitHub 上。
  • 断开连接:断开你的 GitHub 账户。重新连接之前,不会推送任何内容。

当你从一个你有推送权限的仓库 导入应用 时,项目会保持与该仓库的关联,使用一个名为 monstarx 的新分支,从你导入时的那个提交开始。你自己的分支永远不会变动。当你对 MonstarX 的修改满意时,点击 GitHub 菜单中的 发起拉取请求,就会跳转到 GitHub 完成合并。

我需要 GitHub 令牌吗?

不需要。连接个人 GitHub 账户 会安装 MonstarX 的 GitHub App:你在 GitHub 上登录、选择仓库,就完成了。个人访问令牌只是一种备选方式,适合想用这种方式把 MonstarX 限制在单个仓库的人。

GitHub App 能访问我公司的组织吗?

不能。它只安装在你的个人账户上,新仓库也创建在那里。要推送到组织的仓库,请使用 改用 GitHub 授权 连接,或者请组织把你加进去,这样你就能从自己的账户关联它。

以后怎样让 MonstarX 访问另一个仓库?

在 GitHub 上打开已安装 GitHub App 的设置,选择 MonstarX,添加该仓库(或改为 All repositories)。然后在项目的 GitHub 菜单中关联它。

我的仓库是私有的吗?

新仓库默认是私有的。只有当你想公开代码时,才取消勾选 私有仓库。MonstarX 永远不会推送密钥的值或应用的数据。

可以关联属于公司组织的仓库吗?

可以,只要你的 GitHub 账户有推送权限。使用 已有仓库,或者在新建仓库时把组织选为 所有者。

取消关联仓库会怎样?

MonstarX 会停止同步。仓库及其全部历史都会保留在 GitHub 上,之后你还可以重新关联。

开发者在 GitHub 上改了 package.json,为什么没有同步回来?

package.json 和配置文件等框架文件由 MonstarX 管理。对它们的修改会留在 GitHub 上,直到 MonstarX 下次修改该文件;之后的同步也绝不会悄悄撤销这些修改。

可以从仓库部署吗?

可以。仓库可以直接部署,Railway 就是从仓库部署的。另请参阅 发布到其他托管平台。

移交项目后,关联会怎样?

关联会被解除,这样就绝不会以新所有者的名义向你的 GitHub 账户推送任何内容。仓库本身不受影响。