То, что происходит, - вы не используете git правильно. Нет абсолютно никаких проблем с созданием ветки и удалением файлов и папок. Когда вы вернетесь к своей основной ветке, удаленные файлы и папки будут восстановлены, так как они не были удалены из этой ветви.
В вашем случае происходит то, что вы удалили файл / папки из-под git, используя удаление операционной системы, а не команду «git rm». Вот почему git status сообщает о них как о «удаленных». Это также, почему файлы остаются удаленными, когда вы переключаете ветви. git ожидает, что файлы будут там, а их нет.
Состояние Git говорит вам, что нужно запустить «git add», но это не работает. Поскольку файла больше нет, запуск git add завершится с ошибкой. Вы можете не заметить, но в сообщении также говорится, что вы должны запустить «git rm». Вы можете подумать, что не можете этого сделать, так как файл исчез, но это не так. Команда rm все равно удастся удалить файл из репозитория, даже если вы уже удалили его из файловой системы.
Другая, более простая вещь, которую вы можете сделать, это запустить git add -A. Флаг -A скажет добавить, чтобы заметить любые удаленные или добавленные файлы.
Попробуйте это для теста:
git init test-delete
cd test-delete
touch filea
mkdir dir_b
touch dir_b/fileb
git add .
git commit -m "Initial commit"
git checkout -b new_branch
rm -rf dir_b
git add -A
git commit -m "deleted files from branch"
(ls to prove files arent' there)
git checkout master
(ls to show files have been restored)
git checkout new_branch
(ls to show files are gone again)