У меня есть репо @ github. Я поработал дома и отправил на гитхаб. Это включало некоторое удаление файлов и каталогов. Теперь я нахожусь на своем рабочем столе, в котором была копия кода перед удалением файлов и каталогов.
Я выдал следующее:
git remote update
git checkout HEAD
git pull origin HEAD
Он удалил все файлы, которые должны были иметь, но не каталоги, в которых они были.
Два вопроса:
- Почему не удалил каталоги?
- Есть ли команда git, которую я могу выполнить в текущем состоянии, чтобы удалить их?
Ответы:
Git не отслеживает каталоги, поэтому не удаляет те, которые стали пустыми в результате слияния или других изменений. Тем не менее, вы можете использовать
git clean -fd
для удаления неотслеживаемых каталогов (на-fd
средства флага F удаления Орса из неотслеживаемых файлов и д irectories).источник
git clean
будет, конечно.-n
(пробный запуск) вместо-f
первого, чтобы вы могли видеть, что будет удалено. Тем более, чтоgit clean -d
удаляет не только эти беспокоящие каталоги, но и неотслеживаемые файлы.git clean
не удаляет файлы, перечисленные в .gitignore, если вы не передадите эту-x
опцию.Как часть большинства операций, изменяющих рабочее дерево (извлечение, слияние, проверка и т. Д.), Git удаляет все каталоги, которые становятся пустыми в результате этой операции (т.е. git удалил последний файл).
git не удаляет каталоги, которые не являются полностью пустыми, поэтому, если вы скрыли или проигнорировали файлы, то только потому, что git удаляет последний отслеженный файл из этого каталога, не обязательно означает, что git сможет удалить этот каталог. git не считает это ошибкой, поэтому не будет жаловаться на это.
источник
git checkout master
», но большинство людей просто скажет «Я переключился на / проверил мастер». Во всяком случае, когда git сказал: «Уже актуально». это означает, что он ничего не сделал. git удалит только те каталоги, которые он делает пустыми.git checkout
не удалял полностью пустой каталог.У меня была такая же проблема, в моем случае на службе сборки (CI). Поскольку GIT извлекает все файлы без очистки папок, все bin / obj, которые были ранее созданы CI, грязны, поэтому, если я удалю тестовый проект, bin по-прежнему будет содержать DLL и упоминать несуществующие тесты.
Чтобы решить эту проблему; эта команда, кажется, помогает (по крайней мере, для меня)
где X удалит все неотслеживаемые файлы:
источник
Git не отслеживает каталоги, файлы (с их путями). Git создает все каталоги для этих путей, если они еще не существуют (круто!), Однако он не удаляет их, если все файлы, содержащиеся в пути, перемещены или удалены (не круто ☹ ... но есть причины).
Решение (после того, как вы вытащили / перемотали вперед / слили):
Если вы этого не сделаете
stash
раньшеclean
, вы потеряете все неотслеживаемые файлы (безвозвратно).Примечание. Поскольку при этом очищаются и все игнорируемые файлы, вам может потребоваться снова запустить некоторые из ваших сценариев сборки, чтобы воссоздать метаданные проекта (например,
./gradlew eclipse
). Это также удаляет пустые каталоги, которые никогда не были частью путей к файлам git.источник
В настоящее время Git не отслеживает каталоги (см. Git wiki ),
то есть вы не можете добавлять пустые каталоги и не удаляете каталоги, которые оказываются пустыми.(РЕДАКТИРОВАТЬ: Спасибо, Манни, я ошибался! Вы не можете добавлять пустые каталоги, но git удалит каталоги, которые стали пустыми, потому что их отслеживаемый контент был удален. )Что касается команды удаления пустых каталогов: это зависит от вашей операционной системы.
Для Linux вы можете использовать, например,
Однако при этом будут удалены все пустые каталоги!
источник