推送到 GitHub 错误地由另一个 GitHub 帐户完成



我有一个名为a的本地仓库,它已经与一个名为 GitHub 帐户A-githubA的远程仓库相关联, 我还有一个名为b的本地存储库,该存储库尚未与任何远程存储库关联。

我创建了一个名为 GitHub 帐户B-githubB的新远程仓库,并尝试从本地仓库b进行第一次推送以B

发生了什么事

  • 推送成功,我看到B页面反映了b的提交。
  • 但是,B页面上显示的进行第一次推送的用户的名称不是b的名称,而是另一个GitHub帐户A-github的名称。(图标图像也与页面中设置A-github相同)
  • 当我点击第一个推送的用户的名称(A-github)时,我转到了A-github帐户的页面。
  • 奇怪的是,这种情况并没有记录在A-github的"概述"页面上的Contribution activity上。

我的猜测

我猜这是本地存储库bgit config的问题。我尝试了git config -l,发现user.nameuser.email是这样的加倍:

...
...
user.name = the user name I use for repository `a` and `A`
user.email = the user email I use for repository `a` and `A`
...
...
user.name = the user name I use for repository `b` and `B`
user.email = the user email I use for repository `b` and `B`
...
...
...

我想让 git 使用正确的用户 (b) 来推送到B如果可以的话,我想取消A-github完成的推送

我该怎么办?

进展

我已经通过包管理器安装了git filter-repo并尝试了此处显示的方法,

git filter-repo --mailmap my-mailmap与格式化为

Correct Name <correct@email.com> <old@email.com>

然后,我按了回车键。 但是,结果是刚刚返回的外壳

Python

似乎什么也没发生。 我想我需要更多的试验。

我做的对吗?

我有点害怕我正确使用git filter-repo

我的理解是,我首先需要创建一个文本文件

,命名如下:
Correct Name <correct@email.com> <old@email.com>

其中Correct Name<correct@email.com>是我想用来替换当前作者和提交者的姓名和电子邮件,<old@email.com>是写在日志中的当前电子邮件。

我正在输入电子邮件,两端都放<>

可以吗?

进展 2

我发现我似乎需要提前在我的PC上安装Python才能使用git-filter-repo命令,所以我不久前通过Scoop安装了Python。 我再次尝试实现上面的命令,这次 shell 返回:

Cannot read my-mailmap

另一个困难来了。

现在讨论已经偏离了这个话题,我发布了一个新问题,我将关闭这个问题。谢谢你的建议。

首先,在存储库中执行git config -l --show-scope --show-origin:这样,您一定会看到什么是本地配置,它覆盖了全局配置。

其次,您可以使用git filter-repo来更改 repoB 中提交的 user.name/email:然后需要git push --force它(如果您独自处理新存储库,这不是一个大问题)。

最新更新