On Wed, Nov 9, 2016 at 1:23 PM, Roman Terekhov <roman.terekhov@xxxxxxxxx> wrote: > Hi, > > I want to ask about git clean -dXf command behaviour. > > I do the following: > > $ mkdir gitignore_test > $ cd gitignore_test/ > $ git init > Initialized empty Git repository in ~/gitignore_test/.git/ > > $ echo *.sln > .gitignore > $ git add .gitignore > $ git commit -m "add gitignore" > [master (root-commit) ef78a3c] add gitignore > 1 file changed, 1 insertion(+) > create mode 100644 .gitignore > > $ mkdir src > $ touch test.sln > $ touch src/test.sln > $ tree > . > ├── src > │ └── test.sln > └── test.sln > > 1 directory, 2 files > > $ git clean -dXf > Removing test.sln > > $ tree > . > └── src > └── test.sln > > 1 directory, 1 file > > > Why git clean -dXf does not remove all my test.sln files, but just one of them? src/ is not under version control, and currently git does not descend into unknown folders to remove ignored files. If you had a tracked or staged file in src/, then git would descend into src/ and remove test.sln as expected. In your example, try doing: $ touch src/foo.c $ git add src/foo.c $ git clean -dXf Removing src/test.sln Removing test.sln Hope that helps! -John