Using a .cleanignore File
Git offers a wide range of useful command line verbs besides the “usual”
suspects such as add
, commit
or push
/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 here.