Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从其他repo添加git子模块并将其与本地文件夹合并_Git_Git Submodules - Fatal编程技术网

如何从其他repo添加git子模块并将其与本地文件夹合并

如何从其他repo添加git子模块并将其与本地文件夹合并,git,git-submodules,Git,Git Submodules,我有一个特定的情况,我没有在堆栈上找到与之匹配的答案。 我有一个根_项目,它是基础应用程序目录,与它的远程repo同步 现在我有一个文件夹在里面,名字叫奥斯卡。我之前在需要的地方定制了Zippped并将其复制到我的root_项目中。 在那之后,我注意到如果我需要从远程获取更新,一旦这些更新完成,我就会遇到麻烦 基本的想法是使用git子模块,但我真的不知道如何使它适应我的需要,因为我不想使我的项目和实验报告崩溃 还有一个特别的部分是,我只需要repo中的src/oscar,它实际上在我的root_

我有一个特定的情况,我没有在堆栈上找到与之匹配的答案。 我有一个根_项目,它是基础应用程序目录,与它的远程repo同步

现在我有一个文件夹在里面,名字叫奥斯卡。我之前在需要的地方定制了Zippped并将其复制到我的root_项目中。 在那之后,我注意到如果我需要从远程获取更新,一旦这些更新完成,我就会遇到麻烦

基本的想法是使用git子模块,但我真的不知道如何使它适应我的需要,因为我不想使我的项目和实验报告崩溃

还有一个特别的部分是,我只需要repo中的src/oscar,它实际上在我的root_项目中,可以与我在本地oscar文件夹中的更改合并,而不会丢失我在本地已经做过的事情

我将非常感谢任何关于如何在当前情况下正确使用git子模块的帮助和建议,如果可能的话,我也希望看到为实现预期结果而必须采取的步骤

[…]因为我不想在实验中破坏我的项目和回购协议

首先,您不应该害怕在本地存储库中尝试。只要您保留在本地副本上,并且不发布实验性更改,您就可以始终删除整个内容,然后从远程克隆它。如果你只是尝试一下,这是一个很好的学习方法,尤其是当你打破一切进行中的时候。不要犹豫

回答您的问题:我假设oscar作为一个远程存储库存在。Git子模块确实是管理偶尔需要更新的子存储库的好方法。您可以找到关于如何使用子模块的好文档。如果您通过git子模块add直接从远程克隆oscar,而不是先下载并提取zip文件,那么会更容易。这个新克隆的子模块当然不会包含您对oscar的本地更改,但是您可以通过以下步骤轻松导入它们

还有一个特别的部分是,我只需要oscarrepo中的src/oscar,它实际上在我的root_项目中,可以与我在本地oscar文件夹中的更改合并,而不会丢失我在本地已经做过的事情

我不明白这部分。是否只想添加oscaras a子模块的子文件夹

编辑:所以您希望您的子模块只包含在oscar存储库的一个子文件夹中。您可以在通过git子模块add克隆整个存储库之后执行此操作


虽然您只对第5点感兴趣,但仍描述了该过程。请注意,您必须在子模块内部执行此操作,即,您必须将cd刻录到子模块文件夹中。

Thx作为建议,是的,我只想要src/oscar文件夹,因为oscar repo还包括沙盒和其他内容,正如您可以在此处看到的,oscar git repo提供了沙盒和其他我不需要同步的内容。我只需要src/oscar与我在root_项目中的同一文件夹合并。是否可以按照您之前提到的方式执行?有关如何从克隆的子模块中提取子文件夹的详细信息,请参见我的编辑。对于回答和关注详细信息,我想这就是我需要的。我明天会试试这个,告诉你它是否有效:
git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME  BRANCH-NAME