I have a git repository that\'s used only to hold graphics and sound files used in several projects. They are all in one directory without sub-directories. Now I just create
Ok, it seems that you must first do a check-in with the directory completely empty (neither old nor new files), and any files added thereafter will be ignored. If you remove the old files add and new ones before committing, the new ones are added to the repo although they should be ignored.
At least, this worked for me in this situation. Would still be great if anyone could provide more insight on what's going on.
Not sure if this counts or makes me a bad person, but here it goes.
*Generated*
to the root .gitignore filedir *.CheckedIn -Recurse | %{ copy $_.FullName "$($_.FullName)".Replace("CheckedIn","") -EA SilentlyContinue}
I do feel a little bad about myself... but it does in fact work.
If you need to have a tracked file (checked in), but do not want to track further changes of a file while keeping it in your local repository as well as in the remote repository, this can be done with:
git update-index --assume-unchanged path/to/file.txt
After that any changes to this file will no longer show up in git status
.
This command will cause git to untrack your directory and all files under it without actually deleting them:
git rm -r --cached <your directory>
The -r
option causes the removal of all files under your directory.
The --cached
option causes the files to only be removed from git's index, not your working copy. By default git rm <file>
would delete <file>
.
For a subdirectory called blah/
added to git, both of the following seem to work to ignore new files in blah/
. Added to .gitignore:
blah
blah/*
TL;DR to clean up your git repository and make sure ALL your ignored items are indeed ignored:
git rm -r --cached .
git add .
git commit -m "Clean up ignored files"
Note: you don't need to specify a directory, this way your are cleaning the entire remote repo.
To go further read this