gpt4 book ai didi

merge 后Git丢失代码

转载 作者:太空狗 更新时间:2023-10-29 13:03:21 25 4
gpt4 key购买 nike

我们的 GitHub 存储库出现问题。我将解释我们的工作流程:

开发人员从主线分支创建功能/错误修复分支。他们 pull 他们的更改请求以将其 merge 回来。他们可能会从主线分支 rebase 以在工作时从中获取最新更新。在 rebase 之后,他们将 --force 推送到他们的功能分支上。

最近使用 GitHub 网络界面自动 merge 了两个 pull 请求。随后——大约在请求 merge 后两天——发现这些提交中的更改不在代码中。历史上没有任何迹象表明这些更改被还原或覆盖。 merge 本身不会出现在提交历史中,个人提交本身也不会出现。但是 pull 请求已成功 merge 。丢失的提交之一不再可用于 cherry pick。当我们尝试时,我们会收到一条致命的 - 错误的对象消息。

我们怀疑发生了一些历史改写。我们如何才能发现并如何防止这种情况发生。我们的工作流程是否存在根本性错误?

最佳答案

您面临的问题与您的开发人员从主分支 rebase 然后强制推送他们的分支有关。 git rebase 实际上做的是取消提交您所做的所有更改, merge 主分支,然后重新应用您的提交(就好像它们是补丁文件)。这将创建一个带有全新散列的全新 git 提交。

简而言之,旧提交丢失了,并创建了一个新的相同提交。

这就是为什么极度不鼓励对任何公开的作品进行 rebase 的原因,因为这实际上是在改变历史。如果他们的工作基于不再可用的更改,那么从您的工作中分支出来的任何人都会有非常糟糕的一天。

编辑:提交本身并没有丢失,它仍然存在于你的仓库中。但是手头的分店已经买不到了

关于 merge 后Git丢失代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13429812/

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