【问题标题】:Removing contributor from github.com?从 github.com 删除贡献者?
【发布时间】:2017-11-17 16:32:56
【问题描述】:

如何从项目主页中删除贡献者:

链接https://help.github.com/articles/removing-a-collaborator-from-a-personal-repository/ 说可以在设置中,但我没有看到任何合作者:

【问题讨论】:

  • 您是否创建了此存储库?
  • 可能,但人们会冲我尖叫。克隆一个本地副本,删除 Github 存储库。删除本地存储库中的 .git 文件夹。然后在本地初始化一个新的仓库git init,然后新建一个Github仓库并将你的新本地仓库推送到它上面。这显然会删除所有历史记录!
  • 这是 Github 应该考虑的事情。可以实现这样的事情,repo 所有者询问贡献者我想从 repo 主页上删除你的名字,然后贡献者可以接受或拒绝。

标签: git github


【解决方案1】:

你不能(至少不重写历史——这是非常不推荐的)。

这些用户在您的存储库历史记录中有提交,因此他们添加了代码行。即使您删除了他们的所有代码行,他们仍然会显示为贡献者。

贡献者不是合作者。

协作者是由仓库所有者授权的贡献者,可以直接(通常是写)访问仓库,这意味着他们不需要分叉仓库,他们可以被分配到问题等等。

【讨论】:

  • 如果您撤销他们的访问权限但保留他们的提交,会发生什么情况,然后他们会从主页上的那个号码中删除吗?如果没有,如果您还删除或重命名他们的提交怎么办?
  • 如果您撤销他们的访问号码。如果您删除他们的提交,我会相信,也许重命名它们。 But bear in mind the significant impact of renaming and removing commits
  • 我明白这一切,在我看来,你断然说“不,不能做”,而你现在的评论说“是的,我认为你可以做到,只是用另一种方式做”。如果他的主要目标是摆脱贡献者,在我看来毕竟是有办法的。
  • 真的不应该在 git 中重写历史记录,因此我将始终将其作为一种选择。即使那样我也不能保证它会达到预期的效果。
  • 这发生在我身上。我重命名了我的用户 ID,其他人拿走了它。我在 repo 中有一些条目为 userid@github。现在他们以贡献者的身份出现,即使他们与我的项目无关。很烦人。 Github 需要允许您将提交归因于您想要的任何人,而不仅仅是回购历史中的用户电子邮件。
【解决方案2】:

我不小心从旧帐户推送了一个提交。即使在我删除了提交之后,旧帐户仍保留在贡献者列表中。我必须从 GitHub 中删除旧帐户才能使其从列表中消失。

【讨论】:

    【解决方案3】:

    以下方法至少在我的情况下有效。

    1. 在 GitHub 网页上,更改分支名称(例如 main --> main1)。它会更新我的 GitHub 存储库仪表板上的贡献者列表。
    2. 然后将其改回 (main1 --> main)。

    我有多个 GitHub 帐户用于不同的项目。每个用于不同的社区。 但意外的是,我使用错误的帐户推送了一个提交。我更改了提交的作者,但错误的帐户仍然在 GitHub 仪表板的贡献者列表中。我的方法保留了提交历史以及 GitHub 操作设置和问题历史。但我没有检查是否保留了拉取请求。

    【讨论】:

    • 可以确认这很好用。在通过 GH 支持将分叉的 repo 从原始仓库中分离出来后,这非常有用。
    • 为我工作,删除了以错误帐户为作者的“坏”提交。
    【解决方案4】:

    您不能删除它,但您可以更改他们的名字(改成你的)。然而,我强烈建议不要这样做,因为这会影响到所有其他合作者和贡献者(见下文)。

    这有详细描述here。简而言之,您必须使用filter-branch,例如通过以下脚本:

    git filter-branch --env-filter '
    if [ "$GIT_AUTHOR_NAME" = "OLD NAME" ]; then \
        export GIT_AUTHOR_NAME="NEW NAME" GIT_AUTHOR_EMAIL="new.name@mail.com"; \
    fi
    '
    

    为什么最好不要的原因 - 它会带来一些严重的副作用,例如使所有后续提交哈希无效,Peter Reid 也提到过。

    【讨论】:

      【解决方案5】:

      假设它是出于所有正确的意图完成的,并且您是存储库的所有者 - 您可以在存储库上使用 rename 功能。本质上,创建存储库的副本并交换存储库名称,就像使用以下步骤交换变量一样。

      1. 创建一个新的replica 存储库

      2. original 存储库中复制樱桃精选,其中只有预期作者的提交。

      3. original 存储库重命名为to_be_deleted,将replica 重命名为original

      可以通过以下步骤选择来自原始存储库的提交。

      • git remote add repo2 https://github.com/mygit/original.git
      • git pull repo2
      • git cherry-pick <commit>
      • git push

      贡献者本质上是存储库中任何提交的作者。我曾经不小心在我的存储库中提交的作者列表中放了一个错误的电子邮件,并且 github 开始在存储库中显示一个新的贡献者。我试过reverting the commit,但没有帮助。最后我不得不创建/重命名/删除原始存储库。

      【讨论】:

      • 正是我的场景 - 但 repo2 指的是什么?
      • repo2 只是您将从中提取提交的远程存储库的本地名称。
      • 当你说“副本”存储库时,你的意思是只是一个空的存储库,你将把樱桃挑选的提交推送到一个空的存储库还是一个实际的镜像存储库?
      • @PashaSkender :是的,只是一个新的空存储库。
      • @ViFI 我是 git 新手。我试过你的解决方案。挑选提交是否会保留以前的提交详细信息,例如日期?在我的情况下,它没有。新仓库中的提交日期被今天的日期覆盖。我做错了吗?
      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 2018-10-11
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多