Git重置和/或删除远程分支上的提交

问题描述 投票:0回答:1

关于git,我有一个小问题。在项目开始时,我的工作流程整洁(图1和2)。图1来自Intellij,而图2来自运行gitk &命令之后。正如预期的那样,我们看到了相同的状态。

[This image is from Intellij This image is from gitk

但是将“ branch3”与“ master”合并后,我们意识到它不好,因此希望删除该提交。我们执行以下命令:git reset --hard HEAD~1。不出所料,执行此命令后,我们处于以下状态:

This image is from gitk after git reset

然后从该状态创建新的分支“ branch4”。至此,一切都按预期进行。但是,当我们推送“ branch4”并将其与“ master”分支合并后,我们会收到以下问题:

This image is from Intellij This image is from gitk

如您所见,我们仍然有“在分支3上提交”和“在分支3中合并”。请告诉我如何删除那些提交,因为我不想拥有这些提交的任何记录(类似于第一张图片)。因为,显然git reset --hard不会删除远程提交。

我应该改用什么命令?

P.S。使用git reset --soft,我得到了相同的结果。

git bitbucket git-branch git-reset
1个回答
0
投票

获取您的提交历史记录,看起来就像您在本地想要的一样。然后强行将(C0)每个分支推到遥控器。这将为您强制按下的每个分支重写在远程站点上的历史记录,使其看起来与本地分支完全相同。

如果您的远程git服务器或仓库配置为拒绝历史记录重写,则此操作将失败。您将不得不更改该配置。 (默认情况下,GitHub不执行此操作,但GitLab会执行此操作。我不了解bitbucket)

请注意有关在共享分支上重写历史记录的所有警告。如果有人对其分支的克隆进行了更改,则您将要强行推送,将它们合并可能会变得困难/混乱。

© www.soinside.com 2019 - 2024. All rights reserved.