如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
要在本地分支中删除,请使用
git reset --hard HEAD~1
要在远程分支中删除,请使用
git push origin HEAD --force
其他回答
如果要保留历史记录,显示提交和还原,应使用:
git revert GIT_COMMIT_HASH
输入消息解释为什么要回复,然后:
git push
当您发出gitlog时,您将看到“错误”的提交和还原日志消息。
// display git commit log
$ git log --pretty=oneline --abbrev-commit
// show last two commit and open in your default editor
// then delete second commit line and save it
$ git rebase -i HEAD~2
参考:如何在git、本地和远程中删除提交
小心: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中。
git重置--硬HEAD~1你现在将处于前一个位置。拉动树枝。推送新代码。提交将从git中删除
如果您刚刚弄糟了上一次提交(错误的消息,忘记添加一些更改),并想在将其推送到公共回购之前修复它,为什么不使用:
git commit --amend -m "New message here"
如果您有新暂存的更改,它们将与上一次提交(您正在尝试删除)合并,并将替换该提交。
当然,如果你在推送之后修改了一个承诺,你就是在改写历史,所以如果你这样做,一定要理解其中的含义。
如果您希望使用上一次提交的消息,也可以传递“--no edit”选项而不是“-m”。
文件:http://git-scm.com/docs/git-commit.html
推荐文章
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- Git错误:遇到7个文件应该是指针,但不是