Как отменить git init в уже существующем репозитории?
В папке с git-ом случайно нажал на git init , в итоге теперь когда делаю git status у меня все файлы отображаются как измененные. В git log последние коммиты остались. Как отменить действие команды git init ?
Отслеживать
20.2k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак
задан 4 июн 2015 в 14:19
899 5 5 золотых знаков 12 12 серебряных знаков 30 30 бронзовых знаков
Да удалите каталог .git , который создаёт git init .
4 июн 2015 в 14:24
@klopp и потерять всю историю? Хмм, а вообще командой git init можно затереть какие-либо файлы git-а?
4 июн 2015 в 14:26
Нет, затереть какие-либо файлы нельзя, git init — команда идемпотентная. Связанный вопрос: Как правильно удалить Git tracking (контроль версий)?
22 июн 2017 в 3:31
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Если просто случайно создали репозиторий, то нужно удалить папку .git в корне. Это полностью уничтожит репозиторий и, разумеется, отменит то, что сделал git init . Через *nix-консоль это делается так:
rm -r .git
Если же Вы сделали git init в уже существующем репозитории, то бояться нечего:
Running git init in an existing repository is safe. It will not overwrite things that are already there. The primary reason for rerunning git init is to pick up newly added templates (or to move the repository to another place if —separate-git-dir is given).
Отслеживать
34.1k 25 25 золотых знаков 130 130 серебряных знаков 223 223 бронзовых знака
ответ дан 4 июн 2015 в 15:33
23.8k 3 3 золотых знака 47 47 серебряных знаков 62 62 бронзовых знака
то что нужно. спасибо за ответ)
5 июн 2015 в 6:50
познавательно, спасибо
22 июн 2017 в 3:36
Судя по описанию, команда git init была выполнена не в корневой директории проекта, а в одной из вложенных. В таком случае всё, что внутри этой вложенной директории, изнутри нее считается новым репозиторием (а снаружи — старым).
При выполнении любой команды Git в некоторой директории происходит рекурсивный поиск репозитория снизу вверх. Т.е. проверяется текущая директория, потом ее родитель, потом родитель родителя и т.д. Как только находится директория .git , дальнейший поиск прекращается.
Предположим, у нас есть такая структура. В корневой директории проекта A инициализирован репозиторий Git.
A |-.git |-A/B |-A/C |-A/C/X |-A/C/Y |-A/C/Z |-A/D
Теперь мы инициализируем новый репозиторий в директории A/C :
$ cd C $ git init A |-.git |-A/B |-A/C |-.git |-A/C/X |-A/C/Y |-A/C/Z |-A/D
Теперь наблюдаем следующую картину:
При выполнении любой команды Git из директорий A , A/B , A/D , обнаруживается репозиторий в директории A .
При выполнении любой команды Git из директории A/C и вложенных, обнаруживается репозиторий в директории С . Поскольку он только что создан, все файлы отображаются как новые.
Чтобы исправить ситуацию, достаточно удалить .git из директории A/C :
$ rm -rf A/C/.git
Как удалить директорию в Git?
Если вы случайно закоммитили ненужный файл или папку в git-репозиторий и уже сделали push, то чтобы удалить все следы этого файла или папки в том числе и из истории, достаточно выполнить команду:
git filter-branch —tree-filter «rm -rf PATH» HEAD
где PATH — это относительный путь до файла или папки.
После этого выполните (чтобы перезаписать историю изменений):
git push origin master —force
Ответ написан более трёх лет назад
Нравится 24 1 комментарий
В моем случае при вводе команды
git filter-branch —tree-filter «rm -rf PATH» HEAD
удаляется каталог PATH с жесткого диска.
Чтобы этого избежать перед этой командой я выполнил
git filter-branch —force
После этого все ок

Виктор @v_decadence
git rm -r myfolder git commit -m "myfolder is deleted"
Как очистить папку .git (из локального и удаленного репозитория)?

С плясками и бубном помогло — первые две команды в гитбаше, а пушить через тортиллу (ключи через путти сохранены). При этом локальная папка .git остается без изменений, и только после удаления/клонирования резко уменьшается в размерах (но не до нуля, в одной репе аж 10 метров весит, но это вместо 150).

Сергей Кузнецов @sergey-kuznetsov Куратор тега Git
Spaceoddity, используй SmartGit. Это самый мощный и удобный клиент на данный момент. Он бесплатен для личного использования.
Решения вопроса 1

Сергей Кузнецов @sergey-kuznetsov Куратор тега Git
Автоматизатор
Если нужно просто удалить старую историю, то это можно сделать быстро и безопасно всего парой команд.
Первая команда схлопнет всю историю ветки в один коммит:
git reset $(git commit-tree HEAD^ -m 'Новое начало истории')
Вторая команда очистит папку .git от мусора:
git gc —prune=now —aggressive
Ну и конечно отправить новое состояние ветки на гитхаб:
git push —force
Если у вас Windows, то работайте в git-bash, а не в стандартной командной строке.
Как удалить папку из удаленного репозитория git
Если вы хотите удалить директорию из удаленного репозитория, но оставить её на вашем компьютере (например, вы ошибочно запушили директорию с локальным окружением .venv ), то выполните следующие команды
rm --cached -r git commit -m "remove имя_директории from repository" git push origin main
Также добавьте имя директории или паттерн для исключения в .gitignore , чтобы в дальнейшем она не добавлялась в индекс