如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
git重置--硬
git推原点HEAD—力
如果一个或多个提交被标记,请首先删除标记。否则,标记的提交不会被删除。
其他回答
强制更改历史记录
假设您不仅希望删除最后一次提交,而且希望删除最后n次提交中的特定提交,请执行以下操作:
gitrebase-i HEAD~<要返回的提交数>,所以如果您想查看最后五次提交,请使用gitrebase-iHEAD~5。
然后在文本编辑器中,将单词pick更改为放置在要删除的每个提交旁边。保存并退出编辑器。瞧!
附加更改历史记录
尝试git-restore<commit hash>。Revert将创建一个新的提交,以撤消指定的提交。
小心:git reset-hard将删除您的工作目录更改。在运行此命令之前,请确保隐藏所有要保留的本地更改。
假设您正在执行该提交,则此命令将使其变得古怪。。。
git reset --hard HEAD~1
HEAD~1表示在HEAD之前提交。
或者,您可以查看gitlog的输出,找到要备份的提交的提交id,然后执行以下操作:
git reset --hard <sha1-commit-id>
如果你已经推了它,你需要用力推才能摆脱它。。。
git push origin HEAD --force
然而,如果其他人已经成功了,那么你最好开始一个新的分支。因为当他们拉动时,它会将其合并到他们的工作中,你会再次将其推高。
如果您已经推送了,那么最好使用git-restore创建一个“镜像”提交,以撤消更改。但是,这两个提交都将在日志中。
仅供参考——git reset——如果你想摆脱“正在进行的工作”,那么硬头非常好。它会将您重置为最近的提交,并清除工作树和索引中的所有更改。
最后,如果您需要找到您“删除”的提交,除非您已经垃圾收集了存储库,否则它通常会出现在gitreflog中。
这里我只发布了一条清晰的管道
步骤1:使用gitlog获取提交ID。
git log
步骤2:使用git reset返回到以前的版本:
git reset --hard <your commit id>
如果要删除当前正在进行但不想删除数据的提交-
git reset --soft HEAD~1
如果要删除当前正在进行的提交,并希望删除相关数据-
git reset --hard HEAD~1
PS:这些命令只会删除本地提交。
删除整个提交
git rebase -p --onto SHA^ SHA
显然,用您想要删除的引用替换“SHA”。该命令中的“^”是文字。
http://sethrobertson.github.io/GitFixUm/fixup.html#change_deep
推荐文章
- Visual Studio Code: .git文件夹/文件隐藏
- “node_modules”文件夹应该包含在git存储库中吗
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支