如何从子目录添加具有特定扩展名的文件到git存储库而不添加子目录本身?

时间:2018-01-20 08:02:43

标签: git github bitbucket

让我们说我有一个名为REPO的目录,其中包含一个已启动的git repo,在该目录中,有两个名为sub1sub2的子目录和一个& #34; 1.cpp"文件。
sub1有" 2.cpp"文件和其他文件 sub2有" 3.cpp"文件和其他文件,所以它就像这个图

enter image description here

现在我只希望我的存储库中的这些文件没有任何目录

1.cpp
2.cpp
3.cpp

我知道如何使用.cpp忽略除.gitignore个文件以外的所有文件,但我不希望sub1sub2包含在我的回购中,I只想要其中的cpp个文件,我已经搜索了很多但无法找到答案,我希望我能正确解释。

2 个答案:

答案 0 :(得分:1)

你可以移动它们:

cd /path/to/REPO
git mv sub1/2.cpp .
git mv sub2/3.cpp .

如果您不需要,请删除子文件夹。

但实际上,OP意味着:

  

我只是希望Git包含所有子目录中的所有.cpp文件,并将它们添加到存储库中。

     

知道如何使用.gitignore忽略除.cpp文件以外的所有文件但我不希望sub1和sub2包含在我的repo中,我只想要其中的cpp文件

如果您尚未添加任何文件,则.gitignore

**
!**/
!*.cpp

然后git add .只包含cpp文件 您忽略所有文件(**),然后排除文件夹(!**/):这样您就可以从gitignore规则中排除.cpp个文件(!*.cpp)。
那是因为it is not possible to re-include a file if a parent directory of that file is excluded

答案 1 :(得分:0)

在存储库中添加文件夹后,使用git将文件移动到repo目录级别

git add sub1
git mv sub1/2.cpp .
git mv sub2/3.cpp .

考虑到它是空的,你不需要删除目录。添加后提交。