Это не ошибка, это задокументированное поведение.From man git-clean
:
Если неотслеживаемый каталог управляется другим хранилищем git, по умолчанию он не удаляется.
Каталог submod
является другимgit
хранилище;если вы хотите удалить его, Use -f option twice if you really want to remove such a directory
.
git clean -f -f -d submod
делает удалить submod
.Смотрите мои шаги ниже (почти идентичные; другой git version
и жестко заданный submodule
путь, потому что в противном случае git
плюет на пустышку).
Шаги
$ git --version
git version 1.7.5.4 # Note, different git-version.
Создайте два хранилища
git init submod
cd submod
echo "This is a submodule" > README.txt
git add .
git commit -m "Initial commit"
cd ..
git init prog
cd prog
echo "This is a program" > README.txt
git add .
git commit -a -m "Initial commit"
Добавьте submod
как git submodule
в topic1
ветвь.
git checkout -b topic1
git submodule add /Users/simont/sandbox/SOTESTING/Subdir-testing/submod
git commit -m "Added submodule"
Теперь для интересного раздела.
$ git checkout master
warning: unable to rmdir submod: Directory not empty
Switched to branch 'master'
git status
# On branch master
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# submod/
#nothing added to commit but untracked files present (use "git add" to track)
Попытка git-clean
, затем на самом деле git-clean
.
git clean -fd
#Removing submod/
git status
# On branch master
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# submod/
#nothing added to commit but untracked files present (use "git add" to track)
$ # As we can see, we haven't actually removed anything yet.
$ ls
README.txt submod
$ git clean -f -f -d submod
Removing submod/
$ ls
README.txt
$ git status
# On branch master
nothing to commit (working directory clean)