Git ошибка: src refspec master не соответствует

Мне нужно создать репо с именем carboncake.

Я пробовал это:

Клонировал репозиторий gitosis-admin на моем локальном компьютере

$ git clone [email protected]:repositories/gitosis-admin.git
$ cd gitosis-admin
$ vim gitosis.conf

Добавлен раздел [repo carboncake] и [group carboncake] в конец файла

[gitosis]

[group team]
writable = sweepshots
members = git_id_rsa

[group gitosis-admin]
writable = gitosis-admin
members = git_id_rsa

[repo carboncake]
description = A brand new app by Mithun.
owner = Mithun P

[group carboncake]
writable = myappname
members = mithun @core

Затем скопировал файл ключа pub, созданный Putty (я использую Git basg для Windows):

$cp /some/where/mithun.pub keydir/mithun.pub

Выполнены следующие команды:

$ git add gitosis.conf keydir/mithun.pub
$ git commit -m "Added 'carboncake' repository and 'mithun' user."

$ git pull --rebase
$ git push

Но он не создает никакого carboncake.git в My Server.

Итак, я последовал за этим:

Выполнено на сервере следующие команды:

$ su gitosis 
$ git init --bare /srv/gitosis/repositories/carboncake.git

Здесь моя проблема:

Я попытался проверить/клонировать новый репозиторий с моей локальной машины

$ mkdir carboncake
$ cd carboncake
$ git init 
$ touch a_text_file.txt 
$ git add a_text_file.txt 
$ git remote add origin [email protected]:repositories/carboncake.git
$ git push origin master

Что вернула ошибку:

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to '[email protected]:repositories/carboncake.git'

Когда я попробовал git push origin HEAD:master, он возвратил ошибку:

error: src refspec HEAD does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to '[email protected]:repositories/carboncake.git'

Когда я попробовал git push origin master:refs/heads/master, он возвратил ошибку:

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to '[email protected]:repositories/carboncake.git'

git show-ref на локальной машине ничего не отображается

Также каталог /srv/gitosis/repositories/carboncake.git/refs/heads/ на сервере пуст.

Как я могу это исправить?

Ответ 1

Вы создали новый репозиторий и добавили некоторые файлы в индекс, но вы еще не создали свой первый коммит. После того, как вы сделали:

 git add a_text_file.txt 

... do:

 git commit -m "Initial commit."

... и эти ошибки должны исчезнуть.

Ответ 2

Быстрый ответ: когда вы сначала успешно клонируете пустой репозиторий git, источник не имеет основной ветки. Поэтому в первый раз, когда у вас есть фиксация, вы должны сделать:

git push origin master

Что создаст для вас эту новую ведущую ветку. Маленькие вещи, подобные этому, очень запутывают с помощью git.

Если это не исправить вашу проблему, это, вероятно, проблема, связанная с гитолит:

Ваш файл conf выглядит странно. Должен был быть пример conf file, который пришел с вашим гитолитом. Мой выглядит так:

repo    phonegap                                                                                                                                                                           
    RW+     =   myusername otherusername                                                                                                                                               

repo    gitolite-admin                                                                                                                                                                         
    RW+     =   myusername                                                                                                                                                               

Пожалуйста, убедитесь, что вы правильно настроили файл conf.

Гитолит фактически заменяет гитолитную учетную запись пользователя модифицированной оболочкой, которая не принимает интерактивные сеансы терминала. Вы можете увидеть, работает ли gitolite, пытаясь сдать ssh в ваш ящик, используя учетную запись пользователя gitolite. Если он знает, кто вы, он скажет что-то вроде "Привет XYZ, у вас есть доступ к следующим репозиториям: X, Y, Z", а затем закройте соединение. Если он вас не знает, он просто закроет соединение.

Наконец, после первого прогона git на вашем локальном компьютере вы никогда не должны прибегать к созданию репо вручную на сервере. Нам нужно знать, почему ваш git push не удалось изначально. Вы можете причинить себе и гитолит больше путаницы, когда вы не используете гитолит только после того, как вы его настроили.