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


687

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

Какой правильный способ сделать это?

Могу ли я сделать команду оболочки, такую ​​как:

rm -rf .git

из моего каталога проектов или есть способ сделать это как команду Git?

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



2
В зависимости от того, насколько серьезными были ошибки, вы, возможно, захотите сделать интерактивную перебазировку всего этого и просто собрать кучу коммитов на ранней стадии, но сохранить более позднюю хорошую историю.
Каскабель

6
для пользователей Windows:rd /s /q .git
Soorena

Ответы:


689

Все данные, которые Git использует для хранения информации, хранятся .git/, поэтому удаление их должно работать нормально. Конечно, убедитесь, что ваша рабочая копия находится в том состоянии, в котором вы этого хотите, потому что все остальное будет потеряно. .gitпапка скрыта, поэтому обязательно включите эту Show hidden files, folders and disksопцию.

Оттуда вы можете запустить git initновый репозиторий.


1
Я уверен, что мои подпапки не имеют своего собственного скрытого каталога .git, но я все еще получаю значок серого цвета при отправке этих папок в github ... Есть ли что-то еще, что я могу попробовать?
Кокодоко

1
Существует также .gitconfig, поэтому вы также должны удалить его.
Максимилиан Мордиг

рассмотрим 'code'git rm -r --cached your_folder / Моя цель состояла в том, чтобы превратить отслеживаемую папку git в дочернюю папку другой отслеживаемой папки git. Новый родитель не узнает нового потомка, пока я не удалю кеш дочерней папки.
Райан

420

rm -rf .gitдолжно хватить. Это уничтожит всю информацию, связанную с Git.


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

10
Если у вас есть Git Bashна окнах, это также будет работать.
Вирус

1
что -rfзначит?
Нилон

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и нажмите ввод

  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 с помощью 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это * nix shell rmаргументы. Для PowerShell используйте rm -recursive -forceвместо этого.
KFL

14
ОПАСЕН! grep .gitбудет соответствовать файлы, как legit.gifили anithing с "git" в середине имени файла! Пожалуйста, удалите или отредактируйте ответ !!!
pamatt

4
Обновление для соответствия только на git dirs: найти. | grep "\ .git /"
Андрей

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

Выполните следующие команды: find -name .git | xargs rm -rfи find -name .gitignore | xargs rm -rf.
Разработчик Мариус Жиленас

14

Я работаю в среде Linux. Я удалил все файлы и папки Git рекурсивным способом:

rm -rf .git

rm -rf .gitkeep


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.