如何获取git强制推送的用户名
How to get git user name who did force push
最近我的一个队友在 git 中进行了强制推送(存储中的远程回购),我们丢失了大部分旧的提交历史,我惊讶地发现我们无法确定是谁做的。
我用谷歌搜索了它,但没有得到任何满意的答案。这里有人可以帮忙吗?
由于某些原因您无法确定:
如果您不使用 ssh 密钥,您可以随时“伪造”姓名和电子邮件。
git commit -c user.name <faked name> -c user.email <fake email> ...
如果用户有签出和旧提交并且强制推送,提交的将是提交最后一次推送的人(再次假设使用 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
最近我的一个队友在 git 中进行了强制推送(存储中的远程回购),我们丢失了大部分旧的提交历史,我惊讶地发现我们无法确定是谁做的。
我用谷歌搜索了它,但没有得到任何满意的答案。这里有人可以帮忙吗?
由于某些原因您无法确定:
如果您不使用 ssh 密钥,您可以随时“伪造”姓名和电子邮件。
git commit -c user.name <faked name> -c user.email <fake email> ...
如果用户有签出和旧提交并且强制推送,提交的将是提交最后一次推送的人(再次假设使用 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