gpt4 book ai didi

git 获取强制推送历史

转载 作者:太空狗 更新时间:2023-10-29 14:35:15 25 4
gpt4 key购买 nike

这个问题可能重复,但我没有找到完全相同的问题。

在我们 QA 团队的 git 存储库中,我经常发现我之前添加的测试用例丢失了。从主分支的历史中,我再也找不到我的提交了。

有一次对比我个人分支的日志和主分支的日志找到了根本原因,是有人强制推送,那家伙承认他对git merge不是很熟悉但是匆忙推送所以使用强制选项。

但是如果没有这样的分支来备份这些提交历史怎么办?并且每个团队成员都在几天后退出,这样提交历史就永远消失了。

而且即使有这样的备份分支,对比和了解谁强行推送也是非常耗时的。

有没有办法获取强制推送日志?请注意,作为一名普通员工,我不是 git 服务器的所有者/管理员,但我关心我的提交并希望删除它们的人得到警告。

最佳答案

git 本身并没有真正可靠的方法来检索此类信息。 (某些 git 托管软件可能会保留类似 reflog 的强制推送记录,但我不知道有任何记录;如果您使用特定的托管包,您可以查阅其文档。)

除了找到尚未接受新历史记录的克隆之外,您还可以从克隆的引用日志中获取所需的信息,即使它已接受新历史记录 - 但引用日志是本地的和临时的,所以这不能保证。

(根据您的远程主机的托管方式,您可能还可以引用它的 reflogs,如果它保留它们并且您可以访问它们。但即使所有这些 ifs 打破你的方式,不能保证,因为 reflogs 是临时的。)

这就是为什么 git push -f 是一个危险的工具;冒着直言不讳的风险,如果开发人员对 git 的理解还没有发展到他们理解它有多危险的程度,那么该开发人员不应被授予强制推送到与其他开发人员共享的 refs 的权限。

你可以配置一个 git remote 来拒绝所有非快进推送(即使是强制的);请参阅 git config 文档中的 receive.denyNonFastForwards

如果您需要更细粒度的控制,您将不得不再次依赖托管软件来提供它。

关于git 获取强制推送历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55122434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com