gpt4 book ai didi

git - 删除已从提交历史记录中推送的提交

转载 作者:行者123 更新时间:2023-12-02 02:15:26 24 4
gpt4 key购买 nike

[为了完整起见:我正在从一个本地副本访问一个私有(private)存储库,我拥有该存储库的唯一访问权限。在此特定设置中,不存在与其他用户甚至存储库的克隆版本相关的问题。]

我一直在尝试找出如何从目录中完全删除一系列提交。

重要的是,我并没有在功能上尝试撤消提交(即,我想将存储库恢复到没有提交的状态,可能使用反向提交),我正在尝试具体删除提交(即,我不希望它再出现在提交历史记录中)。我找到了很多答案,要么解释如何在本地执行此操作,要么解释如何远程恢复功能,但没有解释如何从历史记录中完全删除提交。

这是因为为了调试持续集成,我进行了 40 次提交,我想将其压缩。

如何才能做到这一点?同样,所有提交都已推送到存储库,我想从历史记录中删除这些提交。 (如果我可以将所有更改 merge 到单个提交中,那就太好了,但我的主要重点是删除提交历史记录,这样我就可以在必要时手动重新引入更改。)

这是一个示例存储库,假设我想删除或压缩前 10 个提交: https://github.com/jlumbroso/push-generated-file/commits/main

谢谢!

最佳答案

您可以通过使用 git rebase -i BASE_COMMIT 压缩提交来完成此操作。这将打开一个编辑器,您可以在其中将第一个提交保留在 pick 处,并将其余部分更改为 squash,然后保存并退出。系统将提示您编辑最终提交的提交消息。

这将导致一次提交包含这 40 次提交中的所有更改。

然后,您需要向远程服务器强制推送(例如git push -f originbranch)以推送重新定位的分支。请注意,GitHub 默认情况下不运行 git gc,因此任何知道其中一个提交的原始提交 ID 的人仍然可以查看它,但它不会成为任何分支的一部分。

关于git - 删除已从提交历史记录中推送的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67245062/

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