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

标签 git bash github intellij-idea ssh

我正在尝试在 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 进行操作;我为 alt 帐户生成了一个新的 ssh key 对,并将其添加到 GitHub 上 alt 帐户的 SSH key 中。我还在我的 ~/.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 帐户的电子邮件和名称。完成所有这些之后,我尝试添加一个新的 Remote 并使用 git bash 推送它:
git remote add origin git@github-alt:alt/project.git
git push -u origin master

哪个确实将提交推送到存储库...作为我的 主要 帐户,不是我的 alt 帐户 .

我在这里做错了什么?我想在我的 上分享 GitHub 上的一个项目替代 帐户,并使用相同的 向其推送提交替代 帐户。

最佳答案

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

但这不会修改现有提交的作者。到目前为止所做的提交有 主要 关联的用户名。在整个提交历史中更改用户名需要 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/*'

关于git - 使用备用帐户在 GitHub 上共享项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39088209/

相关文章:

git - 对 git rebase 感到困惑

git - 怕 git commit 和 push 会不小心覆盖改动

Github - 比较分支时没有文件更改但有很多提交

github - Azure DevOps - 如何为 GitHub 上的任何分支共享一个状态徽章图像?

github - 与Github相比,Gitlab有何不同?

node.js - GIT SCM 中的 Npx 未定义路径

Git - 有人恢复提交,如何找到谁?什么时候?

arrays - Bash 使用 += 将结果添加到数组

python - 语法无效 : Azure CLI with Python

bash - 当我在bash中读取没有回显的PW时,PW是否存储在日志文件中的任何位置?