This is my folder structure:
data/ .gitignore uploads/ .gitignore
I would like to commit the folders but not the files inside them.
So I add a .gitignore files in every folder with the following content:
# Ignore everything in this directory * # Except this file !.gitignore
The problem is that *
matches also on directories so git tracks only data/.gitignore
gitignore file is usually placed in the repository's root directory. However, you can create multiple . gitignore files in different subdirectories in your repository.
If you want to maintain a folder and not the files inside it, just put a ". gitignore" file in the folder with "*" as the content. This file will make Git ignore all content from the repository.
You can have multiple . gitignore , each one of course in its own directory. To check which gitignore rule is responsible for ignoring a file, use git check-ignore : git check-ignore -v -- afile .
Please don't misuse .gitignore
files. Better stick to default ways to go on this, so later developers can quickly get into your project.
.gitkeep
file in the folders that you want to commit without the filesExclude the folders, but not the .gitkeep
from your main .gitignore
file.
folder/* !folder/.gitkeep
This ignores all files in a folder, but not the .gitkeep
file. Now the folder will be commited with only the .gitkeep
file as content.
The solution is quite easy, add !*/
to the .gitignore files and only files in the current folder will be ignored
# Ignore everything in this directory * # Except this file !.gitignore # Except folders !*/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With