GIT:将不同的子目录推送到不同的远程存储库

时间:2017-03-09 09:23:57

标签: git bitbucket

在我的GIT实现中,所有更改都从中拉出并推送到一个远程origin。我也只有一个本地分支:master

我有来自origin的克隆和拉取的客户。但是,他们只需要某些文件夹。每次拉动所有内容都会覆盖一些不需要的文件夹。 Git似乎不允许选择性拉动。

我创建了另一个远程仓库:production;只推送本地存储库中的某些文件夹。预期结果是origin包含项目的所有文件夹,而production只包含一些选定的文件夹。

我很乐意获得提示或替代的最小方法来解决这个问题。

以下是一个示例: 我的本地存储库具有以下结构:

root/...
root/folder1...
root/folder2...
root/folder3...
root/folder4...

我在根文件夹中初始化了git,并跟踪并将所有更改推送到我的远程origin。从origin拉出的客户从文件夹1-4获取所有更改。但是,他们只需要说folder2和folder4。所以我的想法是继续将所有提交推送到origin,但是只能将folder2和folder4上的提交推送到production

这样,如果客户端克隆来源,他们将获得文件夹1-4。如果他们克隆production,他们只获得folder2和folder4。

如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

如果您的项目无法拉动整个存储库,那么您已经设置了错误的结构。

您需要为每个“项目”所需的每个组件设置一个存储库,这样他们就可以为每个单独的部件正确使用存储库。

如果这仍然不合适,那么我建议您的整体架构需要查看。

答案 1 :(得分:0)

在这种情况下,我保留了两个git存储库。有更多正确的方法可以做到这一点,但这种方法也有效。如果目录如下,那么,

root/...
root/prod/....

现在,您可以在此git init目录上执行root。并将此prod添加到.gitignore文件中。然后在git initroot/prod并将其视为完全不同的存储库。

如果您未将prod添加到.gitignore文件,则可以在第一个存储库中对其进行跟踪。