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

GIT:将不同的子目录推送到不同的远程存储库,git,bitbucket,Git,Bitbucket,在我的GIT实现中,所有的更改都是从一个远程源站提取并推送到一个远程源站。我也只有一个本地分支:master 我有从origin克隆和提取的客户端。但是,它们只需要某些文件夹。每次拖动所有内容都会覆盖一些不需要的文件夹。Git似乎不允许有选择地拉 我创建了另一个远程回购:production;仅推送本地存储库中的某些文件夹。预期结果是origin包含项目的所有文件夹,而production只包含一些选定的文件夹 我很乐意得到一些提示或者一个替代的最小方法来解决这个问题 这里有一个例子来说明: 我

在我的GIT实现中,所有的更改都是从一个远程
源站
提取并推送到一个远程
源站。我也只有一个本地分支:
master

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

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

我很乐意得到一些提示或者一个替代的最小方法来解决这个问题

这里有一个例子来说明: 我的本地存储库具有以下结构:

root/...
root/folder1...
root/folder2...
root/folder3...
root/folder4...
我在根文件夹中初始化了git,跟踪并将所有更改推送到我的远程
源文件
。从
源站拉取的客户端从文件夹1-4获取所有更改。然而,他们只需要说folder2和folder4。因此,我的想法是继续将所有提交推送到
源站
,但只能将folder2和folder4上的提交推送到
生产站

这样,如果客户机克隆源代码,他们将得到folders1-4。如果他们克隆
产品
,他们只会得到folder2和folder4


如何实现这一点?

在这种情况下,我保留了两个git存储库。有更多合适的方法可以做到这一点,但这种方法也很有效。如果目录如下所示,则

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


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

如果有无法提取整个存储库的项目,则设置了错误的结构

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


如果这仍然不合适,那么我建议您的总体架构需要考虑。

Git不推送文件或文件夹,它在提交方面起作用。如果要发送包含其他提交子集的提交,则必须对这些子集进行单独的提交。在那之后,你可以把你喜欢的子图推到你喜欢的遥控器上。你解决了吗?我想将
project
推送到源站,但前端和后端要分开生产远程设备。有可能吗@丹尼斯,这能解决你的问题吗?请看下面…谢谢@Christoph,但不是,我想将所有子项的
root
推到
origin
,但将
child1
推到前端prod,将
child2
推到后端prod@Denis我也这么想,但我刚刚意识到,这是个坏主意。因此,我将切换到下面的方法。没有缺点。根据您的类比,本地目录的形式为:root/…,root/folder1…,root/folder2…,root/folder3。。。。目前,我跟踪并将root(包括folders1、2、3)上的所有更改推送到origin。我只想将folder1和folder3上的更改推送到prod远程存储库。这样,如果有人克隆了origin,他们就得到了整个项目,如果克隆了prod,他们每次只得到folder1和folder3。谢谢