Git子模块 - 排除特定文件/目录

17

我正在尝试使用Git的“子模块”功能将第三方代码包含在项目中。我只需要从子模块中获取几个文件,并希望排除所有随附的文档等。

我该怎么做?

2个回答

6
在我的子模块中,我有一个/examples文件夹,我想要在本地删除它,以防止自动生成的makefile看到这些文件;origin必须保持对删除的文件不知情。
在git CLI中: git update-index --assume-unchanged <path/to/file> 要再次跟踪本地更改: git update-index --no-assume-unchanged <path/to/file> 或在SourceTree中,根据Fabian Blechschmidt's answer创建自定义操作。
注意:这与“停止跟踪”不同,其中origin确实会在提交时停止跟踪该文件 - 这不是您想要的。

这个在文件夹上可以工作吗?我只能让它在文件上运行? - Matt Sephton
@MattSephton 这是四年前写的。我不可能百分之百确定记得了。 - Engineer
放心,我重新阅读了你的回复,似乎你是在谈论在目录中处理文件。 - Matt Sephton

2

Git子模块是嵌套在另一个git仓库内部的git仓库。除此之外,它并没有特别之处 -- 子模块的行为与任何其他git仓库相同。当你克隆它时,你将获得与该仓库相关的所有文件和历史记录。

如果你只想要几个文件,并且不关心第三方项目的更改历史记录,也许你应该将特定的文件复制到你的项目中,然后完成它。


2
感谢您的回答。不幸的是,我仍然想要跟踪更改并根据需要推送/拉取子模块(第三方库是我的自有)。 - hamishtaplin
2
我很感激这个。我想那就是情况所在了(我有一个类似的问题——我正在开发一个子模块库,每个模块都有大量额外的单元测试代码。我只需要.m和.h文件。其他所有东西,我都可以留下)。 - Chris Marshall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接