У моєму сховищі GitHub у мене є 2 каталоги. Я хотів би видалити одну з них. Як я можу це зробити, не видаляючи і не створюючи ціле сховище?
У моєму сховищі GitHub у мене є 2 каталоги. Я хотів би видалити одну з них. Як я можу це зробити, не видаляючи і не створюючи ціле сховище?
Відповіді:
Ви можете замовити "майстер" з обох каталогів;
git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
Як згадується в коментарях, зазвичай ви хочете зробити це видалити цей каталог з git, але не видаляти його повністю з файлової системи (локальної)
У такому випадку використовуйте:
git rm -r --cached myFolder
git rm -r myFolder
це, він працював, але також видалив усе з каталогу "MyFolder". Довелося повернути все в каталог "MyFolder", а потім виконати.
git rm -r --cached myFolder
git rm -r --cached directory/
видаляється лише з відслідковується git, але структура сховища залишається.
Кроки для видалення каталогу
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
Крок ігнорувати цю папку в наступних вчинках
Щоб ігнорувати цю папку з наступних комісій, зробіть один файл у корені з іменем .gitignore та вставте ім'я цієї папки в нього. Ви можете покласти скільки завгодно
Файл .gitignore буде виглядати приблизно так
/FolderName
Якщо з якихось причин те, що сказано в кармакадзе, не працює, ви можете спробувати видалити каталог, який ви хочете використовувати, або за допомогою браузера вашої файлової системи (наприклад, у Windows File Explorer). Вилучивши каталог, видайте команду:
git add -A
і тоді
git commit -m 'deleting directory'
і потім
git push origin master
.
Ви можете спробувати це:
git rm -rf <directory_name>
Це змусить видалити каталог.
Якщо ви видалите файли в каталозі (з git rm
поясненням інших відповідей), то каталог більше не існує, що стосується git. Ви не можете ввести порожній каталог, а також не можете його видалити.
Це на відміну від підривної роботи, де потрібно явно svn rm emptyfolder/
, і це, до речі, тому, що man
сторінка для git описує себе як "дурний трекер вмісту"
Відповідь на тему "Як додати порожній каталог до сховища git" посилається на FAQ на цю тему :
Наразі дизайн індексу git (область постановки) дозволяє лише перелічити файли, і ніхто не достатньо компетентний вносити зміни, щоб пусті каталоги не піклувалися про цю ситуацію, щоб виправити її.
Каталоги додаються автоматично, додаючи файли всередині них. Тобто каталоги ніколи не повинні додаватися до сховища та не відслідковуються самостійно.
Ви можете сказати "
git add <dir>
", і він додасть файли туди.Якщо вам дійсно потрібен каталог для існування в касах, ви повинні створити в ньому файл. .gitignore добре працює для цієї мети; ви можете залишити його порожнім або заповнити імена файлів, які ви очікуєте відобразити в каталозі.
Я вже вчинив папку раніше і хочу також видалити каталог в історії.
Я зробив наступне:
Додати папку до .gitignore
:
echo Folder_Name/ >> .gitignore
Видалити з усіх комісій:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
видаліть відповідні документи зі старих комісій:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
Переконайтесь, що всі старі посилання повністю видалені
rm -Rf .git/logs .git/refs/original
Виконайте вивезення сміття
git gc --prune=all --aggressive
підштовхне вас до змін у онлайн-сховищі:
git push
Ви закінчили тут.
Але ви можете до наступного, щоб натиснути всі зміни на всі гілки за допомогою: Але будьте обережні з цією командою!
git push origin --all --force
git push origin --tags --force
Після цього папку було видалено з git, але її не видалили з локального диска.
для видалення порожніх папок
я хотів видалити порожній каталог (папку), який я створив, git не може його видалити, після деяких досліджень я дізнався, що Git не відстежує порожні каталоги. Якщо у вашому робочому дереві є порожній каталог, його слід просто видалити
rm -r folderName
Не потрібно залучати Гіт.
Ви можете використовувати джерело дерева Attlasian (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Просто виберіть файли з дерева та натисніть кнопку "Видалити" вгорі. Файли будуть видалені з локального сховища та локальної бази даних git. Потім вчинити, потім натиснути.
Один мій колега запропонував BFG Repo-Cleaner, який я вважаю потужним. Це не тільки видаляє небажані дані, але також очищає ваш сховище від будь-якої пов'язаної з цим інформації.
Щоб додати новий каталог:
mkdir <YOUR-DIRECTORY>
Але тепер Git не знає цього нового каталогу, тому що Git відслідковує файли, а не каталоги DIRECTORY
git status
Git не буде обізнаний із внесеними нами змінами, тому ми додамо прихований .keep
файл, щоб дізнатись про Git завдяки цій новій зміні.
touch /YOUR-directory/.keep
Тепер, якщо ви натиснете git status
Git, будете в курсі змін.
І якщо ви хочете видалити каталог, вам слід скористатися цією командою.
rm -r <YOUR-DIRECTORY>
І якщо ви перевірили за допомогою git status
, ви побачите, що каталог було видалено.
Комбінація двох відповідей працювала на мене
git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push
якщо воно все ще показує якесь попередження, видаліть файли вручну
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push