Git - 将存储库克隆为只读,仅将更改提交到另一个存储库

问题描述 投票:0回答:1

我正在寻找一种方法,如何使用只读存储库中的庞大代码库,而不将其克隆/分叉到我的远程存储库中。
这是一个想象的场景:

  1. 我已经从 git-repository 本地克隆了一个标签/分支(我们将其命名为Original),我想将其视为只读
  2. 我在本地应用了一些更改。
  3. 现在我想将仅更改的文件(一种补丁)提交到单独的git存储库(让我们将其命名为Patched,我将为此创建一个新的远程存储库)。
  4. 重复步骤 2。

git 是否以某种方式支持这种方法?
另一个开发人员如何获取 Original 存储库并自动应用 Patched 存储库中的更改?
我知道我可以克隆原始存储库并将其完全推送到我自己的存储库中,但即使没有历史记录,它也太大了,而且我的服务器上没有足够的资源。
我正在考虑子模块,但仍然不确定如何设置它(覆盖子模块?),因为我打算修改子模块。
我想,通过混合 VCS(例如克隆 git-repo,并将更改提交到 svn-repo),可能可以进行所需的设置。
还有其他想法吗?
相关主题:

git
1个回答
0
投票

git 是否以某种方式支持这种方法?

部分是的,从某种意义上说,你永远不会提交到原始存储库无论如何 - 你只能提交到你的克隆,并且只有显式同步命令(推送或获取)才能将这些提交返回到原始存储库(或其他一些存储库)远程)。

您不能做的就是将更改后的文件推送到您自己的遥控器中。可能有被截断的历史记录(即推送到“浅克隆”远程),并且在克隆(过滤器对象)时可能有部分历史记录,但据我所知,不可能推送到已过滤的历史记录远程存储库;您将始终推送至少一个包含每个文件的所有“当前版本”的完整提交。 话虽这么说,因为 Git 中的提交始终是本地的,所以听起来您可以完全在本地计算机中工作(可能使用分支,或使用 git-worktree,甚至两个通过硬链接共享磁盘空间的单独克隆)。

其他开发人员如何获取原始存储库并自动应用修补存储库中的更改?

他们必须 a) 从 Patched 克隆它;或 b) 从 Original 克隆,然后从 Patched 中提取新的提交;或 c) 从原始版本克隆,然后从您使用
git bundle

创建的捆绑文件中提取新提交。我

认为
您可能能够托管捆绑包,因为它们较小(仅包括更改的对象或增量)。

© www.soinside.com 2019 - 2024. All rights reserved.