Предполагая, что вы имеете в виду git checkout --orphan <em>name</em>
: это означает, что следующий коммит будет корневым. Вы находитесь на ветке, которая не существует. По сути, это то же самое состояние, которое вы имели бы в новом, полностью пустом хранилище.
Когда у вас нет хранилища, а затем создаете его с git init
, у этого нового хранилища нет коммитов. Это создает проблему, потому что в Git, имя ветки содержит хэш-идентификатор одного фактического существующего коммита. Следовательно, этот пустой репозиторий не может иметь ветку. У него нет коммитов. Ветви должны идентифицировать коммиты, а их нет. Так что у него нет веток. Тем не менее, вы находитесь на ветке master
.
Способ, которым Git обрабатывает это, заключается в том, чтобы позволить вам находиться на ветке, которая не существует. Это то, что * и фактически все - делает git checkout --orphan
: оно ставит вас в несуществующую ветвь.
Когда вы находитесь в этом состоянии, следующий сделанный вами коммит создаст коммит. Создание этого коммита позволяет ветви существовать. Git записывает идентификатор хеша коммита в имя ветви, создавая имя ветви в процессе. Ветвь теперь существует и имеет один коммит. Поскольку ветвь, в которой вы работали, на самом деле не существует, у нового коммита нет родителя: это корневой коммит.
Вы отредактировали свой вопрос, добавив:
Я сделал git rm -rf .
Это просто влияет на Git index . Индекс - это объект, который Git использует для хранения всех файлов, которые будут добавлены в следующий коммит. Таким образом, индекс теперь фактически пуст. За исключением нового, абсолютно пустого репозитория, это состояние довольно необычное: обычно в индексе содержатся все файлы, скопированные из коммита, который вы извлекли. Вы захотите поместить некоторые файлы в индекс, используя git add
, перед созданием нового корневого коммита.
Вы также отредактировали свой вопрос, чтобы вычеркнуть вопрос:
У меня все еще есть моя история и файлы в других ветках ...
Да. История, в Git, - это коммитов;коммиты это история. Добавление нового имени ветки, указывающего на новую корневую фиксацию, не влияет на любые существующие имена ветвей и коммиты, на которые они указывают. Создание нового коммита не повредит ни одному существующему коммиту.
Все коммиты, которые есть в вашем хранилище, продолжают оставаться в вашем хранилище. Ваш новый корневой коммит теперь находится в вашем репозитории, а имя вашей ветви теперь существует, указывая на новый корневой коммит.