With `git clean --ff` we will be deleting nested untracked repositories, so there is no need to differentiate them from other untracked files. Use the DIR_NO_GITLINKS flag in dir.flags to signify this and avoid the is_nonbare_repository_dir() checks. --- builtin/clean.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builtin/clean.c b/builtin/clean.c index 3ff02bbbff..18b37e3fd9 100644 --- a/builtin/clean.c +++ b/builtin/clean.c @@ -955,9 +955,10 @@ int cmd_clean(int argc, const char **argv, const char *prefix) " refusing to clean")); } - if (force > 1) + if (force > 1) { rm_flags = 0; - else + dir.flags |= DIR_NO_GITLINKS; + } else dir.flags |= DIR_SKIP_NESTED_GIT; dir.flags |= DIR_SHOW_OTHER_DIRECTORIES; -- 2.35.1