#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, который находит и удаляет пустые каталоги в проекте и запускает его в перехвате после слияния.