Using a .cleanignore File
Git offers a wide range of useful command line verbs besides the "usual"
suspects such as add, commit, push or pull. One of them is git clean,
which can be used to delete untracked files in a repository. This is useful when
you are trying to delete generated files, but can be annoying if your repository
contains user specific files which are not in version control. Visual Studio
creates directories such as .vs, or files like *.user and
launchSettings.json which contain IDE configuration which are only relevant
for a specific user. You can exclude these files from git clean using the -x
-e <expression> option:
git clean -dfx -e .vs/ -e *.user -e launchSettings.json
These expressions looked similar to the content of a .gitignore file to me, so
I added a function to my C# build tool which feeds the content of a
.cleanignore file into git clean:
# My .cleanignore file .vs/ *.user launchSettings.json
public static void Clean()
{
var expressions = File.ReadLines(".cleanignore")
.Select(l => l.Trim())
.Where(l => !string.IsNullOrEmpty(l) && !l.StartsWith("#"))
.Select(l => $"-e {l}");
Git(
"clean -dfx",
string.Join(' ', expressions));
}
private static void Git(params string[] arguments)
{
// Run git using Process.Start
}
You can find the code in this repository.