【发布时间】:2021-06-11 07:36:51
【问题描述】:
我有一个名为 a 的本地存储库,它已经与 GitHub 帐户 A-github 的名为 A 的远程存储库相关联,
而且我还有一个名为 b 的本地存储库,它还没有与任何远程存储库关联。
我为 GitHub 帐户 B-github 创建了一个名为 B 的新远程存储库,并尝试从本地存储库 b 首次推送到 B。
发生了什么
- 推送成功,看到
B的页面反映了b的commits。 - 但是
B页面上显示的第一次推送用户的名字不是b的名字,而是另一个GitHub账号A-github的名字。(图标图片是也和A-github页面中设置的一样) - 当我点击最先推送的用户名(
A-github)时,我进入了A-github账号的页面。 - 奇怪的是,这种情况没有记录在
Contribution activity的“概述”页面A-github上。
我的猜测
我猜这是本地存储库b 的git config 的问题。我试过git config -l,发现user.name和user.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,并尝试了here所示的方法,
使用git filter-repo --mailmap my-mailmap 将文本文件格式化为
Correct Name <correct@email.com> <old@email.com>
然后,我按下回车键。 但是,结果是刚刚返回的shell
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
又一个困难来了。
现在讨论已经结束了这个话题,I posted a new question,我会结束这个问题。谢谢你的建议。
【问题讨论】:
-
是的
<>是正确的。您可以在git-scm.com/docs/git-shortlog#_mapping_authors 中看到一个示例(除了在您的情况下,您需要包含新的和旧的电子邮件) -
谢谢。我想把一些sn-ps显示的那个链接。现在讨论已经脱离了这个问题的第一个主题I posted a new question,我将关闭这个问题。感谢您的建议。