如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
将代码备份到临时文件夹。以下命令将重置服务器。
git reset --hard HEAD
git clean -f
git pull
如果要保留更改并删除最近的提交
git reset --soft HEAD^
git pull
其他回答
如果您没有发布更改,为了删除最新提交,您可以
$ git reset --hard HEAD^
(注意,这也会删除所有未提交的更改;请小心使用)。
如果您已经发布要删除的提交,请使用git-restore
$ git revert HEAD
假设您尚未推送到远程存储库,则可以重新克隆存储库。这是我几次选择的方法。
我附上这个答案是因为我不明白为什么任何刚刚尝试提交工作的人都会因为使用Git时出错而想要删除所有工作!
如果您想保留您的工作,只需“撤消”提交命令(在推送到repo之前捕获):
git reset --soft HEAD~1
不要使用--hard标志,除非您希望销毁自上次提交以来正在进行的工作。
假设我们要从回购中删除提交2和4。(数字越高,提交越新;0是最早的提交,4是最新的提交)
commit 0 : b3d92c5
commit 1 : 2c6a45b
commit 2 : <any_hash>
commit 3 : 77b9b82
commit 4 : <any_hash>
注意:您需要对回购拥有管理权限,因为您使用的是--hard和-f。
gitcheckout b3d92c5签出最后一个可用的提交。gitcheckout-b repair创建一个新的分支来处理。git cherry pick 77b9b82运行提交3。git cherry pick 2c6a45b运行提交1。git checkout master checkout master。git reset--hard b3d92c5将主机重置为上次可用提交。gitmerge修复将我们的新分支合并到master上。git push-f origin master将master推送到远程存储库。
如果要修复最近的提交,可以通过以下操作撤消提交并取消其中的文件:
git reset HEAD~1
这将使存储库返回到暂存文件的gitadd命令之前的状态。您的更改将在您的工作目录中。HEAD~1指的是分支当前尖端以下的提交。
如果要取消提交N个提交,但将代码更改保留在工作目录中:
git reset HEAD~N
如果您想摆脱最新的提交,并且不想保留代码更改,可以进行“硬”重置。
git reset --hard HEAD~1
同样,如果您想放弃最后N次提交,并且不想保留代码更改:
git reset --hard HEAD~N
推荐文章
- Visual Studio Code: .git文件夹/文件隐藏
- “node_modules”文件夹应该包含在git存储库中吗
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支