Неустранимый: Недопустимое имя объекта: 'master'

182

У меня есть частный сервер под управлением git 1.7 Когда я

git init 

папка не создает основную ветку. Потому что, когда я делаю:

git branch 

это ничего не перечисляет. Когда я делаю:

git --bare init

это создает файлы. Когда я печатаю

git branch master 

это говорит:

fatal: Not a valid object name: 'master'.
Рой ван Зантен
источник
Тот же результат при попытке создать новую ветку:git branch newbranch
Sören

Ответы:

281

Когда я git initпапка не создает главную ветку

Это правда и ожидаемое поведение. Git не будет создавать masterветки, пока вы не совершите что-то.

Когда я делаю git --bare initэто создает файлы.

Non-bare git initтакже создаст те же файлы в скрытой .gitдиректории в корне вашего проекта.

Когда я печатаю, git branch masterон говорит: «Неустранимый: Недопустимое имя объекта:« мастер »»

Это опять правильное поведение. Пока вы не совершите, нет мастера ветки.

Вы не задавали вопрос, но я отвечу на вопрос, который, как я предполагал, вы хотите задать. Добавьте один или несколько файлов в ваш каталог, и git addих, чтобы подготовить фиксацию. Затем git commitсоздать свой начальный коммит и masterветвь.

Мегар
источник
3
Итак, что, если я вообще никогда не хотел указатель ветви с именем "master"? Что если бы я хотел, чтобы это называлось «основным»? Нет способа начать с другого имени для первого указателя ветки? Нет параметров "git init"? Могу ли я пойти и изменить имя, указанное в .git / HEAD? Есть ли еще какие-то файлы, которые мне нужно изменить?
Джеменаке
1
@Jemenake Затем запустите свой репозиторий, сделайте коммит и переименуйте ветку. Если вы действительно хотите избежать создания «основной» ветви, отредактируйте ее .git/HEADи измените refs/heads/masterна refs/heads/main, но нет никакой причины делать это. Просто переименуйте свою ветку после первого коммита.
Meagar
13
Вы можете использовать git checkout -b <branchname>для изменения заголовка - вам не нужно редактировать файл.
Superfly Джон
1
Последняя часть была золотой, TFS GIT поставляется с полностью неинициализированным git-репо. Таким образом, после первого клонирования с использованием SourceTree ничего не работает, долго не мог понять, пока «Затем git commit для создания вашей первоначальной фиксации и основной ветки». Неужели нет способа получить master-local / remote без начальной фиксации / push?
Павел Cioch
Последнее объяснение помогает мне понять, что ветка не может существовать, если нет коммитов.
Mayur Patil
23

Git создает основную ветку, как только вы сделали свой первый коммит. Нет ничего для ветки, если в хранилище нет кода.

user489998
источник
1
Но вам нужна новая ветка, чтобы протолкнуться в мастера.
Сёрен
1
Вот вопрос о том, «Git создает основную ветку, как только вы сделали свой первый коммит». Тогда почему «git status» показывает «On Branch Master» перед всем этим?
Tick20
16

Во-первых, когда вы создаете «пустой репозиторий», вы не собираетесь с ним работать (он не содержит рабочей копии, поэтому git branchкоманда бесполезна).

Причина, по которой у вас не будет masterветки даже после выполнения команды a, git initзаключается в том, что коммитов нет: когда вы создаете свой первый коммит, у вас будет masterветвь.

Borealid
источник
1
Хорошо, это ясно. Но когда я совершаю это, он говорит: fatal: empty идент
Рой ван Зантен
Я исправил это. Но когда я хочу получить / получить этот репо с другого компьютера. Должен ли я сделать git init там?
Рой ван Зантен
@RoyvanZanten Вы можете использовать, git cloneчтобы избавиться от необходимости делать git initна стороне получателя.
Бореалид
Мне удалось заставить все это работать. Нет ошибок Но когда я пытаюсь нажать, он говорит: Запись объектов <bla> bla> Total <3/3> На SERVER 59fa0tweirdcod04 master> master Но когда я проверяю файлы на сервере, ничего не происходит.
Рой ван Зантен
@RoyvanZanten Вы ищете хранилище сервера или рабочую копию сервера ? Вам нужно сделать, git checkoutесли вы хотите, чтобы WC отражал то, что находится в .gitкаталоге (куда вы нажали).
Бореалид
12

Перед созданием новой ветки вам нужно зафиксировать хотя бы один раз на master.

Fundhor
источник