Вопрос:

Поделиться проектом на GitHub используя альтернативный аккаунт

git bash github intellij-idea ssh

93 просмотра

1 ответ

341 Репутация автора

Я пытаюсь поделиться проектом на GitHub и хочу использовать встроенную в IntelliJ IDEA опцию «Поделиться проектом на GitHub». Когда я нажимаю на него, меня просят войти в GitHub, что я делаю успешно, а затем выбираю файлы, которые я хочу зафиксировать, чтобы их можно было перенести в репозиторий.

Проблема в том, что, хотя это действительно создает пустой репозиторий на GitHub, он не выдвигает первоначальный коммит и вместо этого выдает мне ошибку:

Successfully created project 'project' on GitHub, but initial push failed: unable to access 'https://github.com/alt/project.git/': The requested URL returned error: 403

Я знаю причину, по которой это происходит, потому что я настроил git для использования своей основной учетной записи, и я пытаюсь перейти в репозиторий, который находится на моей альтернативной учетной записи. Я создал учетную запись alt по своим собственным причинам. После того, как это не удалось, я попытался сделать это с помощью git bash; Я сгенерировал новую пару ключей ssh ​​для учетной записи alt и добавил ее к ключам SSH в учетной записи alt на GitHub. Я также создал конфиг в моей ~/.ssh/папке:

#Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

#Alt GitHub
Host github-alt
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_alt

А также установите user.email и user.name на адрес электронной почты и имя моей альтернативной учетной записи. Сделав все это, я попытался добавить новый пульт и отправить его с помощью git bash:

git remote add origin git@github-alt:alt/project.git
git push -u origin master

Который на самом деле выдвигает коммит в репозиторий ... как мой основной аккаунт, а не как мой альт .

Что я здесь не так делаю? Я хочу поделиться проектом на GitHub с моей учетной записью alt и нажать на него, используя тот же alt аккаунт.

Автор: driima Источник Размещён: 22.08.2016 08:30

Ответы (1)


2 плюса

641 Репутация автора

Решение

Команда git remote add origin git@github-alt:alt/project.git && git push -u origin masterотправляет код в репозиторий, связанный с учетной записью alt .

Но это не меняет автора существующих коммитов. Коммиты, сделанные до сих пор, связаны с основным именем пользователя. Изменение имени пользователя во всей истории коммитов требует переписывания истории git. Убедитесь, что у вас есть резервная копия репозитория, прежде чем делать это.

Пример скрипта:

#!/bin/sh
git filter-branch --env-filter '

OLD_EMAIL="main@sample.com"
NEW_NAME="alt"
NEW_EMAIL="alt@sample.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

Сделайте принудительный толчок после проверки истории мерзавца. git push --force --tags origin 'refs/heads/*'

Автор: acsrujan Размещён: 22.08.2016 08:49
Вопросы из категории :
32x32