Как удалить git init
Перейти к содержимому

Как удалить git init

  • автор:

Как отменить git init

В этом случае нужно просто удалить репозиторий, который находится в директории .git.

rm -rf .git 

Есть что добавить? Зарегистрируйтесь

Курсы по программированию на Хекслете

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Похожие вопросы

11 мая 2022

11 мая 2022

11 мая 2022

11 мая 2022

  • 8 800 100 22 47 бесплатно по РФ
  • +7 495 085 28 38 бесплатно по Москве

Направления

  • Курсы «Backend-разработка»
  • Курсы «Frontend-разработка»
  • Курсы «Создание сайтов»
  • Курсы «Тестирование»
  • Курсы «Аналитика данных»
  • Интенсивные курсы
  • Курсы DevOps
  • Курсы «Веб-разработка»
  • Курсы «Математика для программистов»
  • Все курсы

О Хекслете

  • О нас
  • Карьера в Хекслете
  • Хекслет Колледж

ООО «Хекслет Рус» 432071, г. Ульяновск, пр-т Нариманова, дом 1Г, оф. 23 ОГРН 1217300010476

  • Справка
  • Вопросы и ответы
  • Сообщество
  • Дополнительно
  • Условия использования
  • Соглашение об обработке ПД
  • Оферта
  • Акции

Как отменить 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).

Отслеживать
34k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака
ответ дан 4 июн 2015 в 15:33
23.8k 3 3 золотых знака 47 47 серебряных знаков 61 61 бронзовый знак
то что нужно. спасибо за ответ)
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 rm

В начале использования Git часто возникает вопрос: «Как заставить Git больше не отслеживать какой-либо файл или несколько файлов?» Чтобы удалить файлы из репозитория Git, можно воспользоваться командой git rm . Ее действие противоположно действию git add.

Обзор команды git rm

Команда git rm позволяет удалять отдельные файлы или группы файлов. Основное назначение git rm — удаление отслеживаемых файлов из раздела проиндексированных файлов Git. Кроме того, с помощью git rm можно удалить файлы одновременно из раздела проиндексированных файлов и рабочего каталога. Удалить с ее помощью файл только из рабочего каталога нельзя. Файлы, в отношении которых выполняется команда, должны быть идентичны файлам в текущем указателе HEAD . В случае расхождений между версией файла из указателя HEAD и версией из раздела проиндексированных файлов или рабочего дерева Git заблокирует удаление. Такая блокировка является механизмом безопасности, который предотвращает удаление изменений в процессе их внесения.

Обратите внимание, что git rm не удаляет ветки. Подробнее об использовании веток Git см. здесь.

Использование

Указывает файлы, подлежащие удалению. Можно указать один файл, несколько файлов через пробел ( file1 file2 file3 ) или шаблон подстановки ( ~./directory/* ).

-f
--force

Параметр -f применяется для отключения проверки безопасности, с помощью которой Git обеспечивает соответствие файлов в указателе HEAD текущему содержимому раздела проиндексированных файлов и рабочего каталога.

Связанные материалы
Шпаргалка по Git
СМ. РЕШЕНИЕ
Изучите Git с помощью Bitbucket Cloud
-n
--dry-run

Параметр dry run является защитным механизмом. Он позволяет выполнить пробный запуск команды git rm без удаления файлов. В выходных данных отображаются файлы, которые должны были быть удалены.

Параметр -r — это сокращение от слова recursive. При выполнении команды git rm в рекурсивном режиме она удаляет не только каталог назначения, но и все содержимое его вложенных каталогов.

Параметр разделителя позволяет явным образом отличить список имен файлов от аргументов, передаваемых команде git rm . Разделитель полезен, когда какие-либо из файлов имеют имена, аналогичные параметрам команды.

--cached

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

--ignore-unmatch

Этот параметр заставляет команду завершиться со статусом sigterm, равным 0, даже если файлы, указанные для удаления, не найдены. Sigterm — это код состояния в Unix. Код 0 указывает на успешный вызов команды. Параметр —ignore-unmatch может быть полезен, если команда git rm используется в составе скрипта оболочки, который должен обеспечивать корректную обработку отказа.

-q
--quiet

Параметр quiet скрывает вывод команды git rm . Как правило, команда выводит по одной строке на каждый удаленный файл.

Отмена изменений, внесенных командой git rm

Изменения, вносимые при выполнении команды git rm , не являются окончательными. Эта команда обновляет раздел проиндексированных файлов и рабочий каталог. Изменения не сохранятся, пока не будет создан новый коммит и они не будут добавлены в историю коммитов. Так что изменения, внесенные командой git rm, можно «отменить» с помощью стандартных команд Git.

git reset HEAD

Команда git reset восстановит раздел индексированных файлов и рабочий каталог до коммита HEAD . В результате изменения, внесенные командой git rm , будут отменены.

git checkout .

Такого же результата можно добиться с помощью команды git checkout: она восстановит последнюю версию файла из указателя HEAD .

Если после выполнения git rm был создан новый коммит, из-за которого удаление сохранилось, можно воспользоваться командой git reflog , чтобы найти ссылку, предшествующую выполнению git rm . Подробнее об использовании git reflog см. здесь.

Пояснения

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

В шаблонах поиска файлов можно задавать имена каталогов. При использовании шаблонов поиска следует быть внимательным. Рассмотрим примеры: directory/* и directory* . Использование первого шаблона приведет к удалению всех файлов в каталоге directory/ , тогда как второй вызовет удаление всех каталогов, имя которых начинается на directory — например, directory1 , directory2 , directory_whatever и т. д., что может быть нежелательным.

Область действия команды git rm

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

Почему следует использовать git rm, а не rm

Репозиторий Git обнаруживает выполнение стандартной команды оболочки rm для отслеживаемого им файла и соответствующим образом обновляет рабочий каталог. Но раздел проиндексированных файлов не обновляется. Чтобы внести в него изменения, для удаленных путей к файлам необходимо дополнительно выполнить команду git add . Команда git rm уменьшает количество действий, поскольку обновляет при удалении и рабочий каталог, и раздел проиндексированных файлов.

Примеры

git rm Documentation/\*.txt

В данном примере шаблон поиска файлов используется для удаления всех файлов *.txt в каталоге Documentation и всех его подкаталогах.

Обратите внимание, что символ звездочки * здесь экранируется символами косой черты. Это сделано, чтобы оболочка не расширяла шаблон. В таком варианте он включает только пути к файлам и подкаталогам, находящимся в каталоге Documentation/ .

git rm -f git-*.sh

В этом примере команда выполняется с параметром force для всех файлов, соответствующих шаблону подстановки git-*.sh . Параметр force явным образом удаляет целевые файлы из рабочего каталога и раздела проиндексированных файлов.

Удаление файлов, которых уже нет в файловой системе

В разделе «Почему следует использовать git rm , а не rm » говорилось о том, что команда git rm предусмотрена для удобства: она сочетает функции стандартной команды оболочки rm и команды git add , позволяя удалить файл из рабочего каталога и раздела проиндексированных файлов. Если удалить несколько файлов с помощью стандартной команды оболочки rm , состояние репозитория может стать проблематичным.

Если требуется записать все явным образом удаленные файлы в следующий коммит, можно выполнить команду git commit -a . Она внесет все события удаления в раздел проиндексированных файлов для подготовки к следующему коммиту.

Если же стоит задача безвозвратно удалить файлы, удаленные с помощью команды оболочки rm , нужно воспользоваться следующей командой:

git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached

Эта команда создаст список удаленных файлов из рабочего каталога и передаст его команде git rm —cached , которая обновит раздел проиндексированных файлов.

Команда git rm: заключение

Команда git rm выполняет действия над двумя главными деревьями управления внутренним состоянием Git: рабочим каталогом и разделом проиндексированных файлов. Команда git rm позволяет удалять файлы из репозитория Git. Это удобный инструмент, объединяющий функции стандартной команды оболочки rm и команды git add : сначала git rm удаляет целевой объект из файловой системы, а затем добавляет событие удаления в раздел проиндексированных файлов. Эта команда — одна из многих, которые можно использовать для отмены изменений в Git.

Работаем с репозиториями в Git

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

Далее я расскажу, как создать, клонировать и удалить эти репозитории.

Следующие инструкции предназначены для тех, кто уже установил Git на свой сервер. Если вы еще не сделали этого, используйте руководство с GitHub, которое поможет разобраться с выполнением поставленной задачи.

Создание Git-репозитория

Сначала рассмотрим создание репозитория. Представим, что у вас уже есть папка для хранения файлов, но она еще не находится под контролем Git.

Откройте «Командную строку‎» (Windows) или Терминал (Linux/macOS) и перейдите по пути данной папки.

Команда для перехода по пути установки Git-репозитория

В Linux выполните команду:

cd /home/user/directory 

В macOS :

cd /Users/user/directory

В Windows:

cd C:/Users/user/directory

Остается только ввести нижеуказанную команду, чтобы завершить первый этап.

git init

Команда для установки локального Git-репозитория

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

git add git commit -m 'initial project version'

Теперь у вас есть Git-репозиторий со всеми необходимыми составляющими и отслеживаемыми файлами.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей

Клонирование существующего репозитория

Второй вариант создания директории для контроля версий – копирование существующего проекта с другого сервера. Это актуально, когда осуществляется доработка готового проекта или вы желаете внедрить его компоненты в свой. В этом поможет команда git clone , о которой и пойдет речь далее.

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

Для клонирования существующего репозитория понадобится ввести git clone . Пример такой команды вы видите ниже:

git clone https://github.com/rep/rep

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

При использовании вышеуказанной команды репозиторий клонируется с текущим названием. Если же оно должно отличаться, используйте следующую вариацию команды:

git clone https://github.com/rep/rep myrep

Завершим этот раздел статьи описанием содержимого, которое появляется в консоли при выполнении команды. Данный вывод соответствует успешному клонированию:

Cloning into 'Git'. remote: Counting objects: 46, done. remote: Compressing objects: 100% (25/25), done. remote: Total 46 (delta 7), reused 43 (delta 4), pack-reused 0 Unpacking objects: 100% (46/46), done. Checking connectivity. done.

Удаление локального Git-репозитория

Если с созданием и клонированием репозиториев все понятно, то как быть, когда папка с проектом уже существует, но в нее нужно поместить новые данные, удалив предыдущие, или когда Git-репозиторий на сервере больше не нужен. В таком случае осуществляется стандартное удаление.

В корне каталога с проектом необходимо избавиться от папки .git, о которой уже шла речь выше. Так вы удаляете только ту информацию, которая связана с Git, но сам проект остается. В Linux через Терминал вы должны перейти к каталогу с проектом и ввести следующую команду:

rm -rf .git

Еще один вариант – удаление .gitignore и .gitmodules в случае их наличия. Тогда команда меняет свой вид на:

rm -rf .git*

Остается только убедиться в отсутствии скрытой папки, которая может помешать инсталляции новой. Для этого существует простая команда ls -lah , выполнить которую необходимо с указанием того же каталога.

Только что мы разобрались с основами создания, клонирования и удаления Git-репозитория. Удачи!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *