如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
如果您没有发布更改,为了删除最新提交,您可以
$ git reset --hard HEAD^
(注意,这也会删除所有未提交的更改;请小心使用)。
如果您已经发布要删除的提交,请使用git-restore
$ git revert HEAD
其他回答
我已经推了。需要远程返回一些提交。尝试了许多变化,但只有Justin via git bush的这句话对我来说很好:
git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force
如果您没有发布更改,为了删除最新提交,您可以
$ git reset --hard HEAD^
(注意,这也会删除所有未提交的更改;请小心使用)。
如果您已经发布要删除的提交,请使用git-restore
$ git revert HEAD
如果您还没有将提交推到任何位置,可以使用gitrebase-i删除该提交。首先,找出提交的时间(大约)有多远。然后执行以下操作:
git rebase -i HEAD~N
~N表示对最后N个提交进行重新基化(N必须是一个数字,例如HEAD~10)。然后,您可以编辑Git提供给您的文件,以删除违规提交。保存该文件后,Git将重写以下所有提交,就像您删除的提交不存在一样。
GitBook中有一个很好的部分,用图片和示例来改变基础。
但是要小心,因为如果你改变了你在其他地方推动的东西,除非你计划进行强制推动,否则需要另一种方法。
如果要保留历史记录,显示提交和还原,应使用:
git revert GIT_COMMIT_HASH
输入消息解释为什么要回复,然后:
git push
当您发出gitlog时,您将看到“错误”的提交和还原日志消息。
假设您尚未推送到远程存储库,则可以重新克隆存储库。这是我几次选择的方法。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别