【问题标题】:Push to GitHub mistakenly done by another GitHub account另一个 GitHub 帐户错误地推送到 GitHub
【发布时间】: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 上。

我的猜测

我猜这是本地存储库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,并尝试了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&lt;correct@email.com&gt; 是我想替换已写入提交日志中的当前作者和提交者的名称和电子邮件,&lt;old@email.com&gt; 是写入日志中的当前电子邮件。

我正在输入电子邮件,两端都输入&lt;&gt;

这样好吗?

进度 2

我发现我似乎需要在我的 PC 上预先安装 Python 才能使用git-filter-repo 命令,所以我前一段时间通过 Scoop 安装了 Python。 我再次尝试执行上面的命令,这次shell返回:

Cannot read my-mailmap

又一个困难来了。

现在讨论已经结束了这个话题,I posted a new question,我会结束这个问题。谢谢你的建议。

【问题讨论】:

  • 是的&lt;&gt; 是正确的。您可以在git-scm.com/docs/git-shortlog#_mapping_authors 中看到一个示例(除了在您的情况下,您需要包含新的和旧的电子邮件)
  • 谢谢。我想把一些sn-ps显示的那个链接。现在讨论已经脱离了这个问题的第一个主题I posted a new question,我将关闭这个问题。感谢您的建议。

标签: git github


【解决方案1】:

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

其次,您可以在 repoB 中使用 git filter-repo to change the user.name/email of your commits:然后您需要 git push --force 它(如果您独自处理该新存储库,这不是一个大问题)。

【讨论】:

  • 谢谢。我尝试了 git filter-repo ,如链接所示,但该命令似乎没有正常运行。 (请参阅上面我对这个问题的新编辑。)
  • @somia 您可以在您的存储库的新克隆副本上尝试相同的命令吗?
  • 我创建了一个新的克隆存储库并尝试了相同的命令,但结果是一样的。刚刚返回Python
  • @somia 你像superuser.com/a/1589985/141那样安装了吗?
  • 没有。我先安装了 Scoop(Windows 的包管理器),然后使用命令 scoop install git filter-repo 安装了 git filter-repo。(这是 Windows 安装 git filter-repo 的推荐方式)但我有点害怕 git filter-repo 可能没有正确安装,因为我在安装它时收到了一种警告。我想我应该尝试另一种方式作为您引用的链接。
猜你喜欢
  • 1970-01-01
  • 2020-02-17
  • 2021-08-23
  • 2023-02-21
  • 2018-05-04
  • 2013-11-06
  • 2023-01-02
  • 2012-06-10
  • 2022-12-11
相关资源
最近更新 更多