比方说,我们有一个软件开发团队,他们正在开发同一个项目。比方说,如果有人执行以下命令,如何查找,谁执行了该命令?
假设我们有两个提交: -
最新的一个: - 45ad24a
旧的: - 64ab34s
如果有人使用以下命令: -
git reset --hard 64ab34s
git push origin master -f
(对用户不适用分支权限)
然后最新提交将变为 64ab34s 。不是实际的( 45ad24a )。我们需要找到谁已执行此命令。
回购活动的近期活动将有一个迹象。我们可以在那里找到提交删除。但是如果在删除提交后对repo进行了进一步的活动,那么该事件最终将从Recent Activity中删除。目前,我们如何找到,谁已删除此提交。
git log 也没有显示这些信息
答案 0 :(得分:4)
如文档中所述,您可以通过设置branch restrictions来阻止重写历史记录。您也可以简单地限制允许谁直接推送到 var http = require('http');
http.createServer(handler).listen(8080);
var handler = function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
}
,而是使用涉及拉取请求的工作流程。
答案 1 :(得分:3)
我已经从Bitbucket的支持中询问了这一点,正如他们所说,他们没有提供此类活动的完整历史记录。
他们有一个功能请求,可以将克隆和推送事件添加到最终用户可用的审核日志中:
我们可以在那里添加投票,并在审核日志中提供我们感兴趣的确切信息。
答案 2 :(得分:0)
在强制推送之后,将会有一个提交,其中不包含丢失的提交(在您的示例中为45ad24a)。
因此检查出一个有45ad24a的提交,然后检查后续提交,直到45ad24a消失。第一个不包含45ad24a的提交是罪魁祸首。
如果罪犯在强制提交之前做了一次变装(用壁球),那就更难了。
在这种情况下,您可能需要将尚未撤销违规提交的本地仓库与具有违规提交的其他克隆进行比较。
如果这是一个工作环境,如果你让我的漂移,你可能需要对人员进行改造......