threads / discuss / 44448

Cleaning ignored files

Subject: Cleaning ignored files

## tl;dr

2 messages between Nov 9, 2016 and Nov 10, 2016.

replies: 1people: 2as markdown or json

Roman Terekhov· Nov 9, 2016, 18:23 UTC · lore
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?
Roman Terekhov
John Szakmeister· Nov 10, 2016, 09:19 UTC · re: Roman Terekhov · lore

Re: Cleaning ignored files

On Wed, Nov 9, 2016 at 1:23 PM, Roman Terekhov <roman.terekhov@gmail.com> wrote:
Show 41 quoted lines
> 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

← back to recent threads