Удаленная папка Git не удаляет локальную при извлечении

#git #atlassian-sourcetree

#git #atlassian-sourcetree

Вопрос:

Один из моих коллажей реорганизовал один из наших проектов в Git, в результате чего несколько каталогов, которые были там ранее, были удалены. Когда я сегодня утром вышел из разработки, используя дерево исходных текстов, файлы в удаленных каталогах исчезли, но каталоги сохранились в моей локальной копии. Есть ли способ, чтобы, когда произойдет что-то подобное, каталог можно было удалить при извлечении?

Это может быть повторяющийся вопрос, но все, что я могу найти, касается восстановления удаленных файлов.

Ответ №1:

Git отслеживает файлы, а не каталоги. Таким образом, для git пустой каталог просто не существует.

Однако вы можете использовать git clean -df команду для удаления всех неотслеживаемых файлов и каталогов. Однако будьте осторожны, так как это также приведет к удалению всех неотслеживаемых файлов.

Со справочных страниц:

 Cleans the working tree by recursively removing files that are not under version control, starting from the current directory.

Normally, only files unknown to Git are removed, but if the -x option is specified, ignored files are also removed. This can, for example, be useful to remove all build products.

If any optional <path>... arguments are given, only those paths are affected.

-d

    Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory.

-f, --force

    If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete directories with .git sub directory or file unless a second -f is given.

-i, --interactive

    Show what would be done and clean files interactively. See "Interactive mode" for details.

-n, --dry-run

    Don't actually remove anything, just show what would be done.
 

Комментарии:

1. Хорошо, это имеет смысл, жаль, что при этом нет возможности удалять только пустые каталоги, так как это также приведет к удалению всех загруженных модулей узла, если это приложение angular.

2. Возможной альтернативой было бы написать свой собственный скрипт bash, который находит и удаляет пустые каталоги в проекте и запускает его в перехвате после слияния.