Как объединить локальное репо, клонированное из перформанса, в существующее репозиторий GitHub - PullRequest
1 голос
/ 02 апреля 2020

У меня есть личное репо на GitHub. У меня есть локальная рабочая область этого на моем компьютере.

У меня есть некоторый поток депо в Perforce, который я клонировал с помощью «git p4 clone» в локальную рабочую область репо на моем компьютере. Причина в том, чтобы сохранить историю от Perforce.

Теперь я хочу сделать sh мое локальное репо, клонированное из Perforce, в существующее частное репо на GitHub (тот, который я упоминал в начале).

Кто-нибудь может подсказать мне шаги?

Пока я пытался:

git p4 clone "my-perforce-stream-path"

, затем пытался:

git remote add origin "my-private-github-repo-url"
git push -u origin master

Я получаю ошибку:

! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'my-private-github-repo-url'

1 Ответ

1 голос
/ 02 апреля 2020

Сначала вам нужно вытащить из репозитория перформанса в частный репозиторий github. Как только вы сделаете это, и репозиторий github синхронизируется с исполняемым, вы сможете перевести свою главную ветвь в репозиторий github. Для этого выполните один из двух вариантов ниже:

Альтернатива 1

  1. Создание локальной копии репозитория github:

    git clone your-github-repo.git

  2. Добавить пульт:

    git remote add p4 "perforce-repo-path"

  3. Извлечь изменения из p4 удаленный в ваш локальный:

    git pull p4 branch-name

    3.1. ПРИМЕЧАНИЕ : если оба репозитория, github и Perforce не связаны (то есть они содержат несвязанные истории друг с другом), вы можете столкнуться с ошибкой, поскольку git не позволит вам слить ветку в другую из несвязанный репо. Вы можете переопределить это с помощью опции --allow-unrelated-histories, например:

    git pull p4 branch-name --allow-unrelated-histories

  4. Наконец, вы сможете изменить локальные изменения на sh github:

    git push -u origin master

Альтернатива 2

  1. Добавьте пульт Github в исполнение репо:

    git add remote github url.git

  2. Далее убедитесь, что вы перетащили историю удаленной ветви github в локальное репо исполнения (чтобы синхронизировать c их до нажатие):

    git pull github <branch-name> --allow-unrelated-histories (--allow-unrelated-histories помогает предотвратить получение ошибки, если оба репозитория содержат несвязанные изменения / истории)

  3. Затем pu sh your ветвь репозитория Perce на удаленном GitHub:

    git push -u github <branch-name>

    ПРИМЕЧАНИЕ. Если у вас возникнут какие-либо проблемы с историями, вы можете использовать тот же флаг --allow-unrelated-histories здесь.

...