使用备用帐户在GitHub上共享项目

时间:2016-08-22 20:30:07

标签: git bash github intellij-idea ssh

我试图在GitHub上分享一个项目,并希望在GitHub上使用IntelliJ IDEA的内置" Share项目"选项。当我点击它时,我被要求登录我成功完成的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帐户上的存储库。我出于自己的原因设置了一个alt账号。在此失败后,我尝试使用git bash;我为alt帐户生成了一个新的ssh密钥对,并将其添加到GitHub上alt帐户的SSH密钥中。我还在~/.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设置为我的alt帐户的电子邮件和名称。完成所有这些后,我尝试添加一个新的遥控器并使用git bash推送它:

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

实际上将提交推送到存储库...作为我的帐户,我的 alt帐户

我在这里做错了什么?我想在我的 alt 帐户上共享GitHub上的项目,并使用相同的 alt 帐户推送到它。

1 个答案:

答案 0 :(得分:2)

命令git remote add origin git@github-alt:alt/project.git && git push -u origin master将代码推送到与 alt 帐户关联的存储库。

但这不会修改现有提交的作者。到目前为止提交的提交已关联用户名。在整个提交历史记录中更改用户名需要git history rewrite。在执行此操作之前,请确保您已备份存储库。

示例脚本:

#!/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历史记录后执行强制推送。 git push --force --tags origin 'refs/heads/*'