Как удалить директорию git linux

Обновлено: 04.07.2024

У меня есть 2 каталога в моем хранилище GitHub. Я хотел бы удалить один из них. Как я могу сделать это без удаления и повторного создания всего хранилища?

@Iarsmans: да, 6 файлов. Оба каталога идентичны, за исключением одного в верхнем регистре, другого в нижнем регистре.

Вы можете оформить «мастер» с обоими каталогами;

Как уже упоминалось в комментариях, обычно вы хотите удалить этот каталог из git, но не удалять его полностью из файловой системы (локальной).

В этом случае используйте:

У меня была точно такая же ситуация. Когда я пытался git rm -r myFolder это работает, но также удалил все из каталога «MyFolder». Пришлось вернуть все в папку «MyFolder», а затем зафиксировать. @Justin Чтобы удалить только из git и оставить файловую систему как есть, используйте git rm -r --cached myFolder @ user2441441 У меня была эта ошибка, когда я пытался удалить папку / файл, который вообще не был добавлен в git rm -r --cached directory/ только удаляет из git отслеживается, но структура хранилища остается.

Чтобы удалить папку / каталог только из репозитория git, а не из локального, попробуйте 3 простые команды.

Шаги по удалению каталога

Действия по игнорированию этой папки в следующих коммитах

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

Файл .gitignore будет выглядеть так

удалить каталог

Вам также нужно будет выполнить команду git rm -r --cached FolderName git commit -m «Удаленная папка из хранилища» на другом компьютере, а затем выполнить синхронизацию. отлично сработано. На моей машине третий шаг не работает. Но это работает, если его изменить на $ git push

Если по какой-то причине сказанное karmakaze не работает, вы можете попробовать удалить каталог, который вы хотите использовать, или с помощью браузера файловой системы (например, в Windows File Explorer). После удаления каталога введите команду:
git add -A
и затем,
git commit -m 'deleting directory'
и затем
git push origin master .

Это сработало для меня. Не могли бы вы объяснить аргумент -A? @Arun -A - сокращение от --all и добавляет изменения из всех отслеживаемых и неотслеживаемых файлов

Вы можете попробовать это: git rm -rf <directory_name>

Это заставит удалить каталог.

Если вы удалите файлы в каталоге ( git rm как объясняют другие ответы), то каталог больше не существует, если речь идет о git. Вы не можете зафиксировать пустой каталог или удалить его.

Это не похоже на Subversion, где вы должны явно svn rm emptyfolder/ , и, кстати, почему man страница для git описывает себя как «глупый трекер контента»

У меня есть 2 каталога в моем репозитории GitHub. Я бы хотел удалить одну из них. Как я могу это сделать без удаления и повторного создания всего репозитория?

вы можете проверить "мастер" с обоих каталогов;

как упоминалось в комментариях, то, что вы обычно хотите сделать, это удалить этот каталог из git, но не удалить его полностью из файловой системы (локальной)

чтобы удалить папку / каталог только из репозитория git, а не из локального попробуйте 3 простых команды.

шаги для удаления каталога

шаги, чтобы игнорировать эту папку в следующей совершает

.gitignore файл будет выглядеть так

remove directory

Если по какой-то причине то, что сказал кармаказе, не работает, вы можете попробовать удалить каталог, который хотите удалить (через браузер файловой системы), выдав команду
git add -A
а потом . --4--> git commit -m 'deleting directory'
а потом . --4--> git push origin master .

вы можете попробовать это: git rm -rf <directory_name>

Это заставит удалить каталог.

если вы удалите файлы в каталоге (с git rm Как объясняют другие ответы), то каталог больше не существует, насколько это касается git. Вы не можете зафиксировать пустой каталог или удалить его.

это не похоже на subversion, где вы должны явно svn rm emptyfolder/ и кстати, почему man страница для git описывает себя как "глупый трекер контента"

перейдите в каталог git и введите следующую команду: rm-rf Имя Директории>

затем просто нажмите изменения в удаленном каталоге GIT: git push origin филиала>

Я обычно использую git add --all для удаления файлов / папок из удаленных репозиториев

master может быть заменен на любой другой ветке репозитория.

вы можете удалить папку локально, а затем нажать, как показано ниже:

вы можете использовать дерево источников Attlasian (Windows) (https://www.atlassian.com/software/sourcetree/overview). Просто выберите файлы из дерева и нажмите кнопку "Удалить" вверху. Файлы будут удалены из локального репозитория и локальной базы данных git. Затем зафиксируйте, затем нажмите.

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

первая команда git должна знать, кто вы, прежде чем удалять что-либо

  1. git init
  2. пользователь конфигурации git.имя"кто-то"
  3. пользователь конфигурации git.электронная почта "someone@someplace.com"
  4. git rm-r
  5. git commit-m "удаление реж"
  6. git push origin master

добавить новый каталог:

но теперь Git не знает об этом новом каталоге, потому что Git отслеживает файлы, а не каталоги Каталог

Git не будет знать об изменениях, которые мы внесли, поэтому мы добавляем hidden .keep файл, чтобы git знал об этом новом изменении.

теперь, если вы нажмете git status Git будет в курсе изменений.

и если вы хотите удалить каталог, вы должны использовать это команда.

и если вы проверили с помощью git status , вы увидите, что каталог был удален.

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

Добавление файлов в git репозиторий

Создайте в каталоге файл README.md любым удобным для вас способом, мы сделаем это с помощью команды touch .

Теперь проверим состояние отслеживаемой директории.

Как вы можете видеть: в рабочей директории есть один неотслеживаемый файл README.md . Git нам подсказывает, что нужно сделать для того, чтобы начать отслеживать изменения в файле README.md : необходимо выполнить команду git add , сделаем это.

Посмотрим ещё раз на состояние.

Видно, что информация о появлении нового файла попала в stage . Для того чтобы это изменение зафиксировалось в репозитории необходимо выполнить команду git commit .

Теперь в рабочей директории и в stage нет объектов, информацию об изменении которых необходимо внести в репозиторий.

В репозиторий был сделан один коммит.

Удаление файлов из git репозитория и из stage

Удаление файла из stage

Вначале разберемся со stage . Создадим ещё один файл.

Внесем изменения в README.md .

Информацию об этом также отправим в stage .

Посмотрим на состояние stage .

Теперь посмотрим на состояние рабочей директории и stage .

Удаление файлов из git репозитория

Удалим файл main.c из рабочей директории.

Уведомим об этом систему git .

Теперь в репозитории остался только один файл README.md .

Удалим файл из репозитория.

Файла main.c больше нет в репозитории.

Его также нет и в рабочем каталоге.

Удалите файл README.md из репозитория самостоятельно.

Переименование файлов в git репозитории

Первый способ. Создадим файл test_main_file.c и добавим его в репозиторий.

Содержимое репозитория после этого будет выглядеть так.

Переименуем его на test_main.c .

Сделаем это в рабочей директории.

Теперь отправим изменение в репозиторий.

В репозитории и в рабочей директории будет находится только файл test_main.c .

Второй способ.

В рамках второго способа рассмотрим работу с командой git mv . Переименуем файл test_main.c в main.c . Текущее содержимое репозитория и рабочего каталога.

Переименуем файл test_main.c на main.c средствами git .

Имя файла изменилось как в репозитории так и в рабочем каталоге.

В операционной системе Linux можно выполнить большинство действий через терминал. Удаление каталога Linux - это достаточно простое действие, которое можно выполнить просто открыв файловый менеджер.

Однако в терминале это делается немного быстрее и вы получаете полный контроль над ситуацией. Например, можете выбрать только пустые папки или удалить несколько папок с одним названием. В этой статье мы рассмотрим как удалить каталог Linux через терминал.

Как удалить каталог Linux

Существует несколько команд, которые вы можете использовать для удаления каталога Linux. Рассмотрим их все более подробно. Самый очевидный вариант - это утилита rmdir. Но с помощью нее можно удалять только пустые папки:


Другая команда, которую можно применить - это rm. Она предназначена для удаления файлов Linux, но может использоваться и для папок если ей передать опцию рекурсивного удаления -r:



Такая команда уже позволяет удалить непустой каталог Linux. Но, можно по-другому, например, если вы хотите вывести информацию о файлах, которые удаляются:

rm -Rfv моя_папка

Команда -R включает рекурсивное удаление всех подпапок и файлов в них, -f - разрешает не удалять файлы без запроса, а -v показывает имена удаляемых файлов. В этих примерах я предполагаю что папка которую нужно удалить находится в текущей рабочей папке, например, домашней. Но это необязательно, вы можете указать полный путь к ней начиная от корня файловой системы:

rm -Rfv /var/www/public_html

Читайте подробнее про пути в файловой системе в статье путь к файлу Linux. Теперь вы знаете как удалить непустой каталог в консоли linux, далее усложним задачу, будем удалять папки, которые содержат определенные слова в своем имени:

find . -type d -name "моя_папка" -exec rm -rf <> \;


Подробнее про команду find смотрите в отдельной статье. Если кратко, то -type d указывает, что мы ищем только папки, а параметром -name задаем имя нужных папок. Затем с помощью параметра -exec мы выполняем команду удаления. Таким же образом можно удалить только пустые папки, например, в домашней папке:

/ -empty -type d -delete

Как видите, в find необязательно выполнять отдельную команду, утилита тоже умеет удалять. Вместо домашней папки, можно указать любой нужный вам путь:

find /var/www/public_html/ -empty -type d -delete

Перед удалением вы можете подсчитать количество пустых папок:

find /var/www/public_html/ -empty -type d | wc -l


Другой способ удалить папку linux с помощью find - использовать в дополнение утилиту xargs. Она позволяет подставить аргументы в нужное место. Например:

/ -type f -empty -print0 | xargs -0 -I <> /bin/rm "<>"

Опция -print0 выводит полный путь к найденному файлу в стандартный вывод, а затем мы передаем его команде xargs. Опция -0 указывает, что нужно считать символом завершения строки \0, а -I - что нужно использовать команду из стандартного ввода.

Если вы хотите полностью удалить папку Linux, так, чтобы ее невозможно было восстановить, то можно использовать утилиту wipe. Она не поставляется по умолчанию, но вы можете ее достаточно просто установить:

sudo apt install wipe

Теперь для удаления каталога Linux используйте такую команду:

Опция -r указывает, что нужно удалять рекурсивно все под папки, -f - включает автоматическое удаление, без запроса пользователя, а -i показывает прогресс удаления. Так вы можете удалить все файлы в папке linux без возможности их восстановления поскольку все место на диске где они были будет несколько раз затерто.

Выводы

В этой статье мы рассмотрели как удалить каталог linux, а также как удалить все файлы в папке linux без возможности их будущего восстановления. Как видите, это очень просто, достаточно набрать несколько команд в терминале. Если у вас остались вопросы, спрашивайте в комментариях!

Читайте также: