Web lists-archives.com

Re: [BUG] git clean -d is too greedy




I was a bit trigger happy posting this, after digging a bit more this is a way more serious than I originally thought.

   1) .gitignore exists in nested repo (either tracked or untracked)
   2) .gitignore is excluded

This can be any file, including those commonly excluded such as *~.

Demonstrating this in a way that looks a lot more likely use case which will potentially wipe out lots of uncommitted work:

# git init -q foo && cd foo
# git init -q bar && cd bar
# touch bar bar~
# git add bar && git commit -qm asd && cd ..
# git clean -e \*~ -dn
Would remove bar/bar

If there were more tracked files in nested repo they'd be removed as well as long as there is at least one excluded file in nested repo.

--
Hermanni