Git - 在自己的远程开发并在 github 上发布

Git - develop on own remote and publish on github

我有以下情况:

我正在与其他人在我们自己的(私人)服务器上开发一些东西。这对于保持文件备份和可用很有用。但是,我也想在 github 上托管它们。

有没有一种方法可以从我自己的服务器推送和拉取,但推送(并且 推送)到 github?我想完全禁用从 github 获取,因为它没有多大意义。本质上,我们希望使用 github 作为发布我们的应用程序的方式,以便其他人可以克隆它,但仍然完全在我们自己的基础架构上工作。

我使用 git remote add github <url> 添加了遥控器,并使用 git remote set-url --add --push github <url> 添加了一个推送 URL。

现在我需要删除提取 URL 但是当我这样做时 git remote set-url github --delete <url>,它说 fatal: Will not delete all non-push URLs

这显然是有意为之的行为,但我仍然想解决它(或找到解决我的问题的好方法)。我可以只删除配置中的提取 URL 还是会破坏长 运行 中的任何内容?我的问题有完全不同的解决方案吗?

我已通读 Git - Pushing code to two remotes,但此处提供的解决方案添加了第二次推送 URL,而不是新的遥控器。据我了解,这并不是我想要的,正如 git remote 的手册所说:

Note that the push URL and the fetch URL, even though they can be set differently, must still refer to the same place. What you pushed to the push URL should be what you would see if you immediately fetched from the fetch URL. If you are trying to fetch from one place (e.g. your upstream) and push to another (e.g. your publishing repository), use two separate remotes.

...所以我宁愿使用两个存储库,对吗?还是我理解错了?

对于我的回答,我建议重新考虑推送到 Github 的目的。我认为没有任何理由删除抓取。

与Github相关的推理

  1. Github 将推送到 repo 的权限仅限于您授予访问权限的那些人。那么,您预计遥控器会发生什么变化,您可能会不小心将其拉下?

  2. 如果有人想更新您的 Github 代码,他们会分叉它,到那时他们可以选择完全忽略您的更改。他们的更改会影响您的发布回购的唯一方式是,如果他们向您提交拉取请求并且您或您授权的人接受它并将更改合并到回购中。如果发生这种情况,我假设您 需要并希望 将该更改拉入您的内部存储库,因为这是一个错误修复或增强功能,使 sense/adds 具有全面的价值(如果你这样做,请确保你有正确的许可和贡献者协议)。

换句话说,我没有看到该存储库有任何您最终不想在内部使用的更改。

与内部工作流程相关的推理

  1. 如果您不小心尝试拉下 Github,而它落后于您当前的回购协议,git 会警告您并且不会更改您的分支引用 - 您需要做一个引起任何问题的力量 - 即使那样,你也可以通过从更新的内部回购中提取来修复它。您必须从 Github 强制获取,然后在内部强制推送,以真正搞砸,然后团队中的其他任何人仍然可以从他们的本地存储库中修复它!

  2. 并不是团队中的每个人都需要将 Github 添加为远程 - 只有负责实际推送到 Github 的人。所以一般培训在这里应该不是问题。

我想我没有必要解决这个问题。