Як видалити відстеження версій з проекту, клонованого з git?


685

Я хочу видалити все відстеження версій із каталогу проекту.

Який правильний метод зробити це?

Чи можу я виконати команду shell, наприклад:

rm -rf .git

з мого каталогу проектів чи є спосіб зробити це як команда Git?

Я використовував цей проект, щоб дізнатися Git і зрозуміти, що я зробив деякі помилки на початку проекту з переміщеними, перейменованими та видаленими файлами. Я хотів би видалити все відстеження Git і почати свіжий git init.



2
Залежно від того, наскільки помилковими були помилки, ви, можливо, захочете зробити інтерактивний перегляд усієї справи і просто зібрати разом тонну зобов’язань на початку, але зберегти більш пізню добру історію.
Каскабель

6
для користувачів Windows:rd /s /q .git
Soorena

Відповіді:


686

Усі дані, які Git використовує для інформації, зберігаються .git/, тому їх видалення повинно працювати добре. Звичайно, переконайтеся, що ваша робоча копія знаходиться у тому стані, в якому ви цього хочете, бо все інше буде втрачено. .gitпапка прихована, тому переконайтеся, що ви ввімкнули Show hidden files, folders and disksопцію.

Звідти ви можете запустити, git initщоб створити свіжий сховище.


1
Я впевнений, що в моїх папках немає власного прихованого каталогу .git, але я все одно отримую значок сірого кольору, коли натискаю ці папки на github ... чи можна ще щось спробувати?
Кокодоко

1
Також є .gitconfig, тому ви також повинні його видалити.
Максиміліан Мордіг

розгляньте 'code'git rm -r - кешируйте свою папку / моя мета полягала в тому, щоб перетворити відстежувану папку git в дочірню папку іншої відстежуваної папки git. Новий батько не розпізнає нову дитину, поки я не вийме кеш дочірньої папки.
Райан Хюберт

419

rm -rf .gitповинно вистачити Це підірве всю інформацію, пов’язану з Git.


1
Якщо ви знайдете деякі cannot unlink Permission deniedз Windows, ви можете вбити explorerпроцес у диспетчері завдань, повторно запустити rm -rf .gitі знову відкрити провідник після цього. це працює для мене!
Майкл

10
Якщо у вас є Git Bashвікна, це також працюватиме.
Вірусний

1
що -rfозначає?
nilon

13
-rозначає "рекурсивний", тому він видалить весь вміст папки, а не помиляється, оскільки папка не порожня, і -fне запитує, чи ви дійсно впевнені у видаленні матеріалів.
Лілі Баллард

1
@Lucky_girl Це видалить всі стани Git з вашої каси. Ні гілок, ні історії, ні віддалених, ні взагалі нічого. Весь цей матеріал зберігається в .gitкаталозі. Без нього ви буквально вже не маєте сховища git.
Лілі Баллард

96

Окрім наведених нижче кроків, ви також можете видалити .gitignore файл.

  • Спробуйте видалити файл .gitignore, якщо ви хочете видалити будь-який слід Git у своєму проекті.

  • ** Розгляньте можливість залишити .gitignore файл, якщо ви хочете коли-небудь переробити Git у проект.

Деякі рамки можуть автоматично створювати .gitignore файл, тому ви можете залишити його.


Операційні системи на базі Linux, Mac або Unix

Відкрийте термінал і перейдіть до каталогу свого проекту, тобто - cd path_to_your_project.

Виконайте цю команду:

rm -rf .git*

Це видалить відстеження та метадані Git із вашого проекту. Якщо ви хочете зберегти метадані (наприклад, .gitignore та .gitkeep), можна видалити лише відстеження, запустивши rm -rf .git.


Windows

Використовуючи командний рядок

rmdirАбо rdкоманда НЕ буде видаляти / видалити приховані файли і папки в каталозі ви вказуєте, так що ви повинні використовувати delкоманду , щоб переконатися , що всі файли будуть видалені з .gitпапки.

  1. Відкрийте командний рядок

    1. Або натисніть Startпотім Runабо натисніть Ключ Windowsклавішу і rв той же час.

    2. Введіть cmdі натисніть Enter

  2. Перейдіть до каталогу проектів, тобто - cd path_to_your_project

  1. Виконайте ці команди

    1. del /F /S /Q /A .git

    2. rmdir .git

Перша команда видаляє всі файли і папки всередині в .gitпапці. Друга видаляє саму .gitпапку.

Немає командного рядка

  1. Відкрийте провідник файлів та перейдіть до свого проекту

  2. Показати приховані файли та папки - див. У цій статті візуальний посібник

    1. У меню перегляду на панелі інструментів виберіть Options

    2. У Advanced Settingsрозділі знайдіть Hidden files and Foldersпід Files and Foldersсписком та виберітьShow hidden files and folders

  3. Закрийте меню параметрів, і ви повинні побачити всі приховані папки та файли, включаючи .gitпапку.

    Видалення .gitпапки Видалення .gitignoreфайлу ** (див. Примітку вгорі цієї відповіді)


1
rmdir .gitне працює, оскільки під ним є папки.
Дейл

Дейл, перевіри рядок під rmdir .git. Пояснюється, що команда, наведена вище rmdir .git, використовується для видалення всіх файлів і папок у папці .git, перш ніж rmdirкоманда видалить саму папку.
Метт C

1
Ви також можете зробити це rd /s /q .git, що
Грег,

Що стосується вікон, rmdir /S .gitдовели роботу. Дякую за це
Едер Луїс Хорхе

70

Це не розумний вибір переміщати все .git*вручну, особливо коли ці .gitфайли сховані в підпапках так само, як і в моїй умові: коли я встановив Skeleton Zend 2 by composer + git, існує досить багато.git у папках та підпунктах створено файлів. папки.

Я спробував rm -rf .gitсвою оболонку GitHub, але оболонка не може розпізнати параметр -rfRemove-Item.

www.montanaflynn.me вводить таку команду оболонки, щоб .gitодночасно видалити всі файли, рекурсивно! Це справді працює!

find . | grep "\.git/" | xargs rm -rf

5
"Я спробував 'rm -rf .git' на своїй оболонці Github, але оболонка не може розпізнати параметр '-rf' для Remove-Item." - це тому rm, що це псевдонім PowerShell remove-item. І -rfце * rmаргументи оболонки nix . Для PowerShell використовуйте rm -recursive -forceзамість цього.
KFL

14
НЕБЕЗПЕЧНО! grep .gitвідповідатиме файлам на зразок legit.gifабо аніту з "git" в середині імені файлу! Видаліть або відредагуйте відповідь !!!
паматт

4
Оновлення, щоб відповідати лише на git dirs: знайти. | grep "\ .git /"
Андрій

3
Все ще недостатньо безпечно: це зачепить файли та каталоги, які закінчуються .git. Це повинно бути grep "^\.git/"; навіть краще (і швидше) буде фільтр по імені в findвиклику: find . -name .git.
пвгоран

Виконайте такі команди: find -name .git | xargs rm -rfі find -name .gitignore | xargs rm -rf.
розробник Marius Žilėnas

14

Я працюю з середовищем Linux. Я видалив усі файли та папки Git рекурсивно:

rm -rf .git

rm -rf .gitkeep

9

У середовищі Windows ви можете видалити відстеження Git із каталогу проекту, просто ввівши нижче.

rd .git /S/Q

7

З кореневої папки запустіть

find . | grep .git

Перегляньте відповідність і переконайтеся, що вони містять лише ті файли, які ви хочете видалити та відрегулювати відповідно. Після задоволення бігайте

find . | grep .git | xargs rm -rf


5

Найпростіший спосіб вирішити цю проблему - використовувати командний рядок. Введіть цю команду rm -R .git/Потім введіть ... АБО rm -rf .git/натисніть Enter ...


2

Користувальний рядок Windows (cmd) Користувач:

Ви можете видалити '.git' рекурсивно у папці вихідного проекту, використовуючи команду одного рядка.

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.