我有一个特定的情况,我没有在堆栈上找到与之匹配的答案
我有一个root_project
是基础应用程序目录,与它的远程仓库同步。
现在我有一个文件夹,名为oscar
。我之前已经下载了压缩oscar并将其复制到我的root_project
,之后我已经在我需要的位置进行了自定义。
之后我注意到,如果我需要从远程oscar获得更新,我会遇到麻烦。
基本的想法是使用git submodule
,但实际上无法弄清楚如何使其适应我的需要,因为我不想让我的项目崩溃并回购实验。
另外一个具体的部分是我只需要来自oscar repo的src/oscar
,这实际上是在root_project
中,并且可以合并我在本地{{1}中的更改文件夹,没有丢失我已在本地完成的事情。
对于如何在当前情况下正确使用oscar
,我将不胜感激,如果可能的话,我也希望看到我必须采取的步骤来实现预期的结果
答案 0 :(得分:1)
[...]因为我不想让我的项目崩溃并回复试验。
首先,您不应该害怕在本地存储库中尝试。只要您保留本地副本并且不发布实验性更改,您就可以随时删除整个内容并从远程重新克隆它。如果你只是尝试一下,这是学习东西的一种非常好的方式,特别是当你打破一切正在进行的时候。不要犹豫!
回答你的问题:我认为oscar
作为远程存储库存在。 Git子模块确实是管理需要偶尔更新的子存储库的好方法。您可以找到有关如何使用子模块here的良好文档。如果您通过oscar
直接从远程克隆git submodule add
而不是先下载和解压缩zip文件,将会更容易。这个新克隆的子模块当然不会包含您对oscar
的本地更改,但您可以按照described here的步骤轻松导入它们。
另外一个具体的部分是我只需要来自oscar repo的src / oscar,这实际上是在我的root_project中,并且可以与我在本地oscar文件夹中的更改合并,而不会丢失我已经在本地完成的事情。
我不明白这一部分。您是否只想添加oscar
子文件夹作为子模块?
编辑:所以你希望你的子模块只包含oscar
存储库的子文件夹。您可以在使用
git submodule add
)后执行此操作
git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAME
该过程描述为here,尽管只有第5点对您感兴趣。请注意,您必须在子模块中执行此操作,即您必须cd
进入子模块文件夹。