2013-04-02 135 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。