提交详细信息中显示了被阻止的用户

时间:2020-09-16 11:45:14

标签: git github gitlab git-config

我使用的笔记本电脑包含旧的配置: git全局凭据

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

因此,当我使用用户名和密码推送第一次提交时,我在提交详细信息中发现了被阻止的用户 这怎么可能发生? 在Gitlab的配置中有什么方法可以防止这种情况发生?

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

1 个答案:

答案 0 :(得分:2)

[edit]我写了很长的答案,然后我看到你提到gitlab。

通过谷歌搜索“ gitlab块作者”,我进入了此页面:
https://docs.gitlab.com/ee/push_rules/push_rules.html#enabling-push-rules

有一个推送规则:

检查作者是否是GitLab用户
入门版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使用的凭据管理器,等等)。 / p>


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

对于1.: 即使blockeduser现在被阻止,也可以将信息保留在该用户原先创建/编辑的过去提交中。
blockeduser是提交者的情况下,您可以采取一些措施来拒绝新的提交,但是在大多数情况下,不会对提交的作者/提交者进行检查。

一般规则是:

  • 更新git的配置,以在您创建的新提交中设置正确的作者/提交者,
  • 如果您错误地用另一个人的电子邮件创建了一些提交,则可以编辑这些提交,然后push -f进行结果。

要做到这一点,请参阅例如以下SO问题:

How to change the commit author for one specific commit?

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

How to change the author and committer name and e-mail of multiple commits in 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

如果所说的提交已经被合并或包含在其他人的工作中,则更改它可能很麻烦,您可能不得不忍受归因于错误作者的提交。