Git跟踪对外部项目的更改

时间:2013-04-02 15:33:56

标签: git

我的项目有以下结构。

- 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中。

实现这一目标的最佳方式是什么。

感谢。

2 个答案:

答案 0 :(得分:1)

如果您想忽略liblib/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。