如何获取git强制推送的用户名

How to get git user name who did force push

最近我的一个队友在 git 中进行了强制推送(存储中的远程回购),我们丢失了大部分旧的提交历史,我惊讶地发现我们无法确定是谁做的。

我用谷歌搜索了它,但没有得到任何满意的答案。这里有人可以帮忙吗?

由于某些原因您无法确定:

  1. 如果您不使用 ssh 密钥,您可以随时“伪造”姓名和电子邮件。

     git commit -c user.name <faked name> -c user.email <fake email> ...
    
  2. 如果用户有签出和旧提交并且强制推送,提交的将是提交最后一次推送的人(再次假设使用 http/https)

您可以使用`git reflog``检查开发人员的本地存储库

--

您可以尝试按照此处所述读取隐藏日志
https://confluence.atlassian.com/stashkb/how-to-read-the-stash-log-formats-317951177.html

同样 - 如果您使用 ssh 密钥,这将很有帮助。否则没用。


git reflog

git reflog 将显示更新 HEAD 的任何更改,在您的情况下指出谁更改并提交了错误的提交。


How to prevent it for next time?

为存储安装此插件

Protect specific branches from force pushes

https://marketplace.atlassian.com/plugins/com.carolynvs.force-field/server/overview