преобразовать проект без git в проект git и отправить его в репозиторий gerrit

я пытаюсь узнать о git и gerrit в течение пары дней, и есть ошибка, которую я не могу найти для нее. Вот сообщение об ошибке;

*asfaa@asadaf:~/test$ git review -R
Could not connect to gerrit.
Enter your gerrit username: remote0
Trying again with ssh://<username>@<ip>:29418/test
Creating a git remote called "gerrit" that maps to:
    ssh://<username>@<ip>:29418/test
This repository is now set up for use with git-review. You can set the
default username for future repositories with:
  git config --global --add gitreview.username "remote0"
Your change was committed before the commit hook was installed.
Amending the commit to add a gerrit change id.
remote: Processing changes: refs: 1, done    
To ssh://<username>@<ip>:29418/test
 ! [remote rejected] HEAD -> refs/publish/master (no common ancestry)
error: failed to push some refs to 'ssh://<username>@<ip>:29418/test'*

Я получаю эту ошибку после следующих шагов;

  • Я создаю папку gerrit с помощью команды «ssh -p 29418 user@localhost gerrit create-project имя_проекта»
  • Затем я создаю папку с тем же самым в своем домашнем каталоге и конвертирую ее в репозиторий git с помощью команды «git init».
  • Затем я копирую все содержимое проекта, которое я хочу отправить, в репозиторий gerrit в этой папке и добавляю все изменения как новые изменения, используя команду «git add --all».
  • Я создаю файл .gitreview и помещаю в него атрибуты хоста и проекта.
  • Зафиксировать мои изменения.
  • И, наконец, я использую команду «git review -R», чтобы отправить свои изменения в репозиторий gerrit для проверки.

Здесь, на последнем шаге, если я использую эту команду git push ssh://[username]@[ip]:29418/project_name, она работает. Но в этом случае нет смысла использовать репозиторий gerrit, потому что я загружаю их напрямую в git без какой-либо проверки. Более того, я предполагаю, что мне придется иметь дело с этой ошибкой позже, когда я клонирую этот проект на другой компьютер и отправлю свои изменения в репозиторий gerrit, поэтому лучше, если я узнаю, что я делаю неправильно в приведенном выше.

заранее спасибо


person caneru    schedule 08.01.2016    source источник


Ответы (2)


Вместо того, чтобы выполнять git init в новом каталоге и добавлять свой код, я бы порекомендовал вам клонировать новый пустой репозиторий gerrit и внести в него изменения. Итак, чтобы изменить ваши шаги:

  1. Создайте папку gerrit с помощью команды «ssh -p 29418 user@localhost gerrit create-project имя_проекта»
  2. Клонировать имя_проекта: клонировать ssh://user@localhost:29418/имя_проекта
  3. Скопируйте все содержимое проекта, который вы хотите, и «git add --all»
  4. Создайте файл .gitreview и поместите в него атрибуты хоста и проекта.
  5. Зафиксировать изменения
  6. git обзор
person Metric Crapton    schedule 12.02.2016

Причина HEAD -> refs/publish/master (no common ancestry), вероятно, в том, что master (local) не был подключен к master (remote, usually: origion/master). Чтобы убедиться в этом, вы можете запустить git config --list и найти:

branch.master.remote=origin
branch.master.merge=refs/heads/master

Если это отсутствует, вы можете установить его вручную и напрямую (лучше не делать):

git config --local branch.master.remote=origin
git config --local branch.master.merge=refs/heads/master

или лучше использовать:

git branch --set-upstream-to=origin/master master

имя ветки получено из:

git branch --all

мой это:

$ git branch --all
* master
  remotes/gerrit/master
  remotes/origin/master
person Tiina    schedule 14.03.2018