首页 > 解决方案 > 提交详细信息中显示的被阻止用户

问题描述

我使用包含旧配置的笔记本电脑: git global credentials

git config --global user.email =>blockeduser@email.com

所以当我用我的用户名和密码推送我的第一个提交时,我在我的提交详细信息中发现了被阻止的用户这是怎么发生的?有没有办法在 Gitlab 的配置中防止这种情况发生?

注意 现在我更改了全局配置,但我问是否有办法防止其他用户将来发生这种情况

标签: gitgithubgitlabgit-config

解决方案


[编辑]我写了我的长篇答案,然后我看到你提到了 gitlab。

通过谷歌搜索“gitlab block author”,我登陆了这个页面:
https ://docs.gitlab.com/ee/push_rules/push_rules.html#enabling-push-rules

有一个推送规则:

检查作者是否是 GitLab 用户
Starter 7.10
限制作者(电子邮件)对现有 GitLab 用户的提交。

看看你是否可以在你的服务器或帐户上激活那个。

但是,如果您(或任何用户)使用错误的用户帐户在本地创建了提交,您仍然需要在推送之前按如下方式编辑此提交。


首先:有两个地方提到了看起来像用户名的东西:

  1. 存储在提交中的信息(此提交的作者是blockeduser@email.com
  2. 用于拉取/推送到远程的凭据(在 中的用户名https://blockeduser@github.com,或通过 ssh 时与 ssh 密钥关联的用户名)

1.来自配置参数git config user.namegit config user.email
2.来自您用于访问远程的 url,以及系统上的一些配置(例如:~/.ssh/config如果您使用 ssh,可能是 git 使用的凭证管理器等)。


当您说用户被“阻止”时,您可能意味着2.如果您使用此用户的凭据,那将不再起作用。

1.然而:即使blockeduser现在被阻止,保留该用户创建/编辑的过去提交的信息是合法的。
您可能会采取一些措施来拒绝提交者在哪里blockeduser的新提交,但大多数时候不会对提交的作者/提交者进行检查。

一般规则是:

  • updategit的配置以在您创建的新提交中设置正确的作者/提交者,
  • 如果您错误地使用其他人的电子邮件创建了一些提交,您可以编辑这些提交和push -f结果。

为此,请参阅例如这些 SO 问题:

如何更改一个特定提交的提交作者?

git commit --amend --author="Author Name <email@address.com>" --no-edit

如何在 Git 中更改多个提交的作者和提交者姓名和电子邮件?

在您的历史记录中发现要重写的第一个提交的 id(例如:)eacf32并将<parent>下面替换为eacf32^

git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
'   <parent>..HEAD

如果所述提交已经合并或包含在其他人的工作中,那么更改它可能会非常麻烦,并且您可能不得不忍受归因于错误作者的提交。


推荐阅读