我的项目有以下结构。
- src/
- .gitignore
- lib
- liba
- libb
- lib
- libd
在我的。gitignore
中,我要求忽略lib
文件夹。假设lib
包含外部库,如jquery,jqueryui,..,它们有自己的生命周期。不幸的是,我使用的工具在lib
文件夹中需要src
。现在,我需要对liba
进行更改。我不想跟踪lib中的所有外部项目(liba除外),但需要将我的更改保存到liba。如果我从.gitignore中删除lib,则会导致跟踪lib中的项目。可能是我只能在.gitignore(option1)中排除一个项目,或者git子模块可能就是答案。 option1需要排除我将来可能添加到lib
的任何库,而不是每次都手动添加到.gitignore。我读到了关于子模块,但不确定它是不可能的,因为外部仓库在我的src中。
实现这一目标的最佳方式是什么。
感谢。
答案 0 :(得分:1)
如果您想忽略lib
,lib/liba
除外,您可以这样构建.gitignore
:
/lib
!/lib/liba
除了lib
之外,这基本上是要忽略lib/liba
中的所有内容。如果您要跟踪的*.h
中只有少数文件(例如lib/liba
个文件),则可以更进一步:
/lib
!/lib/liba/*.h
虽然这不会捕获lib/liba
子目录中的文件。要做到这一点,您可能需要.gitignore
中的第二个lib/liba/.gitignore
。然后您的主.gitignore
就像第一个示例,而您的lib/liba/.gitignore
会说:
*
!*.h
答案 1 :(得分:0)
您可以使用git add -f
显式添加被忽略的项目。这样你可以保持你的.gitignore,但仍然跟踪lib / liba。