从 Git 中的远程仓库中删除提交
有时在使用 Git 时,我们会意识到提交出错并且需要删除。原因可能是客户不希望在产品中使用该功能。
要么我们引入了一个错误,要么需要再次处理,因为我们已经提交了错误的实现。
本文将讨论我们如何删除本地和远程仓库并使用 Git 命令清理所有这些仓库。
在 Git 中,我们可以通过两个不同的过程来删除提交。这些过程取决于更改,无论它们是否被推送到远程分支。
从 Git 中的本地仓库中删除提交
如果我们的更改还没有推送到远程仓库,那么我们可以通过以下命令在本地删除最近的提交:
git reset --hard HEAD~1
上面提到的命令将丢弃文件夹(工作树)中所做的所有更改,并将 HEAD
移动到 HEAD
之前的最新提交。
如果我们想在特定的提交之前删除提交,我们将运行 git log
来搜索特定的提交 id。之后,我们将使用以下提到的命令删除这些提交:
git reset --hard <sha1-commit-id>
前面提到的这个命令将丢弃工作树中所做的所有更改,并将 HEAD
移动到我们选择的提交中。
从 Git 中的远程仓库中删除提交
如果我们想从远程仓库中删除提交,我们将强制推送
新的 HEAD
提交。或者,如果我们已经将更改推送到远程仓库,我们将运行以下命令:
git push origin HEAD --force
如果其他人拉了这个分支,那么最好启动一个新分支;否则,它将把它合并到他们的工作中,在这种情况下,我们需要再次推回同一个分支。
这将从本地和远程两个仓库中删除该提交。如果我们只需要从远程而不是从本地删除它,那么我们将执行以下提到的命令:
git push origin +HEAD^:branch_name
在执行这些命令之前,我们应该再看一下,因为它会删除我们所有的工作目录更改。
删除后,如果我们想再次搜索该提交,更优选的是,它会出现在 <git reflog>
中,除非我们的仓库已被垃圾回收。
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn