2013-04-02 111 views
0

我的项目具有以下结构。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中。

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

谢谢。

回答

1

如果你想忽略lib,除了lib/liba,你可以组织你的.gitignore这样的:

/lib 
!/lib/liba 

这基本上说忽略lib一切,除了lib/liba。如果只有在要跟踪lib/liba几个文件(例如*.h文件),你可以把它更进了一步:

/lib 
!/lib/liba/*.h 

虽然不会在lib/liba子目录赶上文件。要做到这一点,您可能需要第二个.gitignorelib/liba/.gitignore。那么你的主要.gitignore就像第一个例子,你的lib/liba/.gitignore会说:

* 
!*.h 
0

您可以使用git add -f明确添加被忽略的项目。这样,你可以离开你的.gitignore,但仍然跟踪lib/liba。