git push error error: src refspec xxx не соответствует ни одному. используя git flow

Раньше я создавал репо на моем частном сервере git

git init --bare
Initialized empty Git repository in /home/poc/git_repo/local_display_multi_langs            .git/

Затем я попытался add remote в своей рабочей копии на моем Mac.

git remote add origin ssh://[email protected]/home/poc/git_repo/local_display_multi_langs.git

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

  514  git flow init
  519  git flow feature start read_xml
  524  git ci -am "first ci"

Затем попытался переместить все ветки в репозиторий моего частного сервера git и получил следующие исключения:

[src] $ git push origin feature
[email protected]'s password:
error: src refspec feature does not match any.
error: failed to push some refs to 'ssh://[email protected]/home/poc/git_repo/local_display_multi_langs.git'

Я пропустил или неправильно использовал некоторые шаги?

Как перенести все ветки на моей рабочей копии на удаленный сервер?

Затем, когда я клонирую проект с моего сервера git.

Как получить новый клонированный проект и исходный проект идентичны.

Спасибо

Спасибо за @VonC

Теперь я могу отправить все ветки в моей локальной рабочей копии на удаленный сервер с помощью

git push origin --all

Но когда я делаю git clone ssh://[email protected]/home/poc/git_repo/local_display_multi_langs.git в другой папке.

[local_display_multi_langs] $ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/feature/read_xml
  remotes/origin/master

Я видел вышеупомянутые ветки, которые мне кажутся странными.

Потому что я ожидаю получить те же результаты, что и исходная рабочая копия, как показано ниже.

Есть ли способ получить clone from my remote server and restore the status as the original working copy

[local_display_multi_langs] $ git br
  develop
* feature/read_xml
  master

person newBike    schedule 05.12.2013    source источник


Ответы (1)


Как я мог отправить все разветвленные на моей рабочей копии на удаленный сервер?

Вы можете как минимум:

git push origin --all

'feature' - это команда git-flow, а не имя ветки.
См. Шпаргалка по gitflow.

'feature' переводится в пространство имен ветки, определяя иерархию ветвей .
Отправка только этих функциональных веток будет:

git push origin refs/heads/feature/*:refs/remotes/origin/feature/*

Или вы можете зарегистрировать refspec в .gitconfig.

person VonC    schedule 05.12.2013
comment
Я думал, что feature - это ветка по умолчанию в git flow. Спасибо за Ваш ответ - person newBike; 05.12.2013
comment
@poc no, feature - это ветка namespace. Вы можете отправить только feature ветки s с помощью refspec (git-scm.com/book/en/Git-Internals-The-Refspec) git push origin refs/heads/feature/*:refs/remotes/origin/feature/* (или укажите этот refspec в вашем .gitconfig: stackoverflow.com/a/1915046/6309) - person VonC; 05.12.2013
comment
Извините, я понятия не имею о пространстве имен в Git. Я возьму соответствующие знания. Спасибо ~ Кстати, как мне получить "такую ​​же" рабочую копию с помощью git clone с моего сервера - person newBike; 05.12.2013
comment
@poc клон git будет клонировать все удаленные ветки: stackoverflow.com/a/72156/6309. (Если вы не клонируете клон: stackoverflow.com/q/5563349/6309). Если вы хотите, чтобы эти ветки были видны как ваши собственные локальные ветки после клонирования, вам необходимо их создать: stackoverflow.com/a/6300386/6309 - person VonC; 05.12.2013