我使用的笔记本电脑包含旧的配置: git全局凭据
git config --global user.email
=> blockeduser@email.com
因此,当我使用用户名和密码推送第一次提交时,我在提交详细信息中发现了被阻止的用户 这怎么可能发生? 在Gitlab的配置中有什么方法可以防止这种情况发生?
NB 现在我更改了全局配置,但是我在问是否有办法防止将来其他用户发生这种情况
答案 0 :(得分:2)
[edit]我写了很长的答案,然后我看到你提到gitlab。
通过谷歌搜索“ gitlab块作者”,我进入了此页面:
https://docs.gitlab.com/ee/push_rules/push_rules.html#enabling-push-rules
有一个推送规则:
检查作者是否是GitLab用户
入门版7.10
限制作者(电子邮件)对现有GitLab用户的提交。
查看是否可以在服务器或帐户上激活该密码。
但是,如果您(或任何用户)使用错误的用户帐户在本地创建了提交,则在推送之前,您仍然必须按以下方式编辑此提交。
首先:在两个地方提到了类似于用户名的内容:
blockeduser@email.com
)https://blockeduser@github.com
中的用户名,或通过ssh时与ssh密钥关联的用户名) 1.
来自配置参数git config user.name
和git 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
如果所说的提交已经被合并或包含在其他人的工作中,则更改它可能很麻烦,您可能不得不忍受归因于错误作者的提交。