在我的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。
如何实现这一目标?
答案 0 :(得分:3)
如果您的项目无法拉动整个存储库,那么您已经设置了错误的结构。
您需要为每个“项目”所需的每个组件设置一个存储库,这样他们就可以为每个单独的部件正确使用存储库。
如果这仍然不合适,那么我建议您的整体架构需要查看。
答案 1 :(得分:0)
在这种情况下,我保留了两个git存储库。有更多正确的方法可以做到这一点,但这种方法也有效。如果目录如下,那么,
root/...
root/prod/....
现在,您可以在此git init
目录上执行root
。并将此prod
添加到.gitignore
文件中。然后在git init
上root/prod
并将其视为完全不同的存储库。
如果您未将prod
添加到.gitignore
文件,则可以在第一个存储库中对其进行跟踪。