.gitignore -- 跟踪文件和目录的特定子目录
.gitignore -- track files AND specific subdirectories of directory
在将其标记为无法控制的重复之前,我查看了十几个 Stack Overflow 问题,其中 none 对我的案例有效。
root/
├── trackdir1/ # track directory and its subdirectories
├── trackdir2/ # track directory and its subdirectories
├── ignoreddir/ # ignore all other subdirectories of root
├── .../
└── * # keep all FILES within root
我有一个目录(实际上是几个目录,但我们假设它是 root
)。我想跟踪 root
中的所有文件和 root
的某些特定子目录,但忽略所有其他子目录。
我看过的所有 Stack Overflow 问题都是这样或那样:包含文件但忽略子目录,或者包含特定子目录但忽略文件。
根据我对.gitignore的理解(明显欠缺),我需要对root
里的文件做一个例外,对我要跟踪的具体子目录做例外,然后排除这些文件在根目录下的所有子目录下。
!/*
!/trackdir1/
!/trackdir1/**
!/trackdir2/
!/trackdir2/**
/*/**
但是,此模式仍然不包括 trackdir1
和 trackdir2
。我也试过 !/trackdir1
和 !/trackdir1/*
.
我做错了什么?
.gitignore
文件的内容按顺序处理,后面的指令覆盖前面的指令。例如,这里 /*/**
覆盖 !/trackdir2/**
。
只需将 /*/**
放在首位即可:
/*/**
!/*
!/trackdir1/
!/trackdir1/**
!/trackdir2/
!/trackdir2/**
在将其标记为无法控制的重复之前,我查看了十几个 Stack Overflow 问题,其中 none 对我的案例有效。
root/
├── trackdir1/ # track directory and its subdirectories
├── trackdir2/ # track directory and its subdirectories
├── ignoreddir/ # ignore all other subdirectories of root
├── .../
└── * # keep all FILES within root
我有一个目录(实际上是几个目录,但我们假设它是 root
)。我想跟踪 root
中的所有文件和 root
的某些特定子目录,但忽略所有其他子目录。
我看过的所有 Stack Overflow 问题都是这样或那样:包含文件但忽略子目录,或者包含特定子目录但忽略文件。
根据我对.gitignore的理解(明显欠缺),我需要对root
里的文件做一个例外,对我要跟踪的具体子目录做例外,然后排除这些文件在根目录下的所有子目录下。
!/*
!/trackdir1/
!/trackdir1/**
!/trackdir2/
!/trackdir2/**
/*/**
但是,此模式仍然不包括 trackdir1
和 trackdir2
。我也试过 !/trackdir1
和 !/trackdir1/*
.
我做错了什么?
.gitignore
文件的内容按顺序处理,后面的指令覆盖前面的指令。例如,这里 /*/**
覆盖 !/trackdir2/**
。
只需将 /*/**
放在首位即可:
/*/**
!/*
!/trackdir1/
!/trackdir1/**
!/trackdir2/
!/trackdir2/**