次のようなディレクトリ構成があるとします。
├hoge2.txt ├hoge1.txt ├.gitignore └main/ ├ taskA/ │ └ taskAA/ │ └ taskaa.py └ test1.py └ test2.py
main/ディレクトリの中すべてのみをgitで管理したかったので、次のように書きました。
.gitignoreの中身
* # すべて無視する !/main/* # ただしmain/ディレクトリ以下のファイルすべては除く
しかしこれではうまくいきませんでした。
この状態で git add . しても、なにもステージングされません。
この状態でステージングできるのは、main/ディレクトリのみです。しかし、gitは空のディレクトリのみは管理できないらしいので、実際は何もステージングされないということ(らしい)です。
main/ディレクトリ以下のファイルをステージングしたいならば、まずmain/ディレクトリ自体を除外する必要があります。
.gitignoreの中身
* # すべて無視する !/main/ # ただしmain/ディレクトリは除く !/main/* # ただしmain/ディレクトリ以下のファイルすべても除く
これでもまだダメです。
この状態でgit add .したら、次のファイルがステージングされます。
- main/test1.py
- main/test2.py
どうやら、ステージングされるのはmain/ディレクトリ直下のファイルのみのようです。
main/ディレクトリ直下のディレクトリも含めたすべてをステージングしたいならば、次のようにします。
.gitignoreの中身
* # すべて無視する !/main/ # ただしmain/ディレクトリは除く !/main/** # ただしmain/ディレクトリ以下のファイルもディレクトリすべても除く
これでOKです。
git add .すると、次のファイルがステージングされます。
- main/test1.py
- main/test2.py
- main/taskA/taskAA/taskaa.py
難しいですね。