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
On Wed, Nov 9, 2016 at 1:23 PM, Roman Terekhov [off-list ref] 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