git - 如何从分支中删除提交?

标签 git git-rebase git-reset

如何从我的分支历史记录中删除提交? 我应该使用 git reset --hard HEAD 吗?

最佳答案

小心 git reset --hard 将删除您的工作目录更改。在运行此命令之前,请务必存储您想要保留的任何本地更改

假设你正坐在那个提交上,那么这个命令会搞砸它......

git reset --hard HEAD~1

HEAD~1 表示在 head 之前提交。

或者,您可以查看 git log 的输出,找到您要备份到的提交的提交 ID,然后执行此操作:

git reset --hard <sha1-commit-id>

如果你已经推送了它,你将需要强制推送以摆脱它......

git push origin HEAD --force

但是,如果其他人可能已将其 pull 下,那么您最好还是开始一个新分支。因为当他们 pull 时,它只会 merge 到他们的工作中,然后您会再次将其推回。

如果您已经推送,最好使用 git revert,创建一个“镜像”提交来撤消更改。但是,两次提交都将记录在日志中。


仅供引用 -- git reset --hard HEAD 如果你想摆脱 WORK IN PROGRESS 是很好的选择。它会将您重置为最近的提交,并清除您的工作树和索引中的所有更改。


最后,如果您需要找到您“删除”的提交,它通常会出现在 git reflog 中,除非您对存储库进行了垃圾回收。

关于git - 如何从分支中删除提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338728/

相关文章:

git - 有没有办法恢复在 rebase 期间意外跳过的提交?

git - 恢复 git reset 即使它们不再显示在 repo 上

git - 在 git stash pop 之后撤消 git reset --hard

git - 我可以通过 http git clone 非裸存储库吗?

git - 如果在没有 git-svn 的情况下使用 SVN 和 Git 之间的共享存储库,会有什么问题吗?

git - 使用另一个文件夹中的 git "log"

git - git 命令中的 <pathspec> 是什么?

git-rebase - 如果什么都没有改变,rebase -i 会做什么?

git pull --rebase 因冲突而失败,但 git push 有效

git - 命令 "git reset --hard <commit>"是否删除另一个分支中的提交历史记录?