如何在本地和远程中永久删除git中的提交?

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

我意外地更新了对服务器的错误提交,当我将其重置为工作提交时,它显示你的分支主机后面1提交使用git pull来快进但我不想快进。我只想删除那个特定的远程提交.....

请帮忙

git github bitbucket
2个回答
1
投票

首先,正如@RomainVALERI指出的那样,我会非常小心地重置与其他人共享的远程分支上的历史记录。例如,如果它是开发或主分支,以任何方式重置历史记录绝不是一个好主意。

在git中撤消提交有两种常用方法。

1. Revert the bad commit (no history alteration)

对于像dev,master等共享分支来说,这是最安全的路由,因为有人可能已经完成了你做出的错误提交。您只需创建一个撤消错误提交和推送的新提交。

git revert <commit_hash>
git push

既然你的问题告诉我这是最近的提交(HEAD指向的那个),你也可以做git revert HEAD和推送。

2. Reset old commit and force push (rewrite history)

如果它是您正在使用的分支,您可以采用此路线。它可能是一个功能或错误修复分支。既然只是你在研究它,重写历史并不重要。同样,我在这里假设它是您想要删除的最新提交。有更多涉及的方法来处理旧的提交(请参阅:git rebase

正如@Rohan在他的回答中所做的那样,在错误提交和强制推送之前将HEAD重置为提交。

git reset HEAD
git push --force

更新1-

托管提供商(即VSTS,GitHub)还允许管理员提出每个人都需要遵守的分支策略。 dev / master分支的一个非常常见的策略是禁用“强制推送”,原因如上所述。如果它是一个共享的回购,很有可能你没有“强制推送”权限,你将不得不采取“恢复”路线。


0
投票

根据帖子中提到的描述:

如果它是历史记录中的最后一次提交,那么以下命令将起作用

 git reset HEAD
 git push remote_name branch_name -f

如果它不是最后一次提交那么

步骤1:在提交之前找到要删除git log的提交。第2步:签出提交git checkout

希望它能回答你的问题。

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