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

时间:2018-08-25 06:47:48

标签: git github bitbucket

我不小心将错误的提交更新到服务器,并且当我将其重置为工作提交时,它表明您的分支主控落后于1个提交,请使用git pull来快进,但我不想快进。我只想从远程删除该特定提交.....

请帮助

2 个答案:

答案 0 :(得分:1)

对于初学者,正如@RomainVALERI指出的那样,我非常小心地在与他人共享的远程分支上重置历史记录。例如,如果它是一个 dev master 分支,那么以任何方式重置历史记录永远不是一个好主意。

有两种常见的方法来撤消git中的提交。

1。还原错误的提交(不更改历史记录)

这是前往 dev master 等共享分支的最安全的方法,因为有人可能已经拉入了您所做的错误提交。您只需创建一个新的提交即可撤消错误的提交并进行推送。

git revert <commit_hash>
git push

由于您的问题告诉我这是最近一次提交(HEAD指向的提交),因此您也可以执行git revert HEAD并进行推送。

2。重置旧的提交并强制推送(重写历史记录)

如果这是您正在使用的分支,则可以采用此路线。它可能是功能 bugfix 分支。由于只是您在进行操作,因此重写历史记录并不重要。 再次,我将在此假定它是您要删除的最新提交。有更多的方式可以处理较早的提交(请参见:git rebase

@Rohan回答时,只需在错误的提交和强制推送之前将HEAD重置为提交即可。

git reset HEAD
git push --force

更新1-

托管服务提供商(即VSTS,GitHub )还允许管理员设置每个人都需要遵守的分支策略。出于上述原因, dev / master 分支的一个非常常见的策略是禁用“ 强制推送”。如果是共享存储库,则很有可能没有“ 强制推送”特权,因此您必须采取“ 还原”路线。

答案 1 :(得分:0)

根据帖子中提到的说明:

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

 git reset HEAD
 git push remote_name branch_name -f

如果不是最后一次提交,则

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

希望它能回答您的问题。