如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
在本地分支上重置
git reset --hard HEAD~<Number of commit> So git reset --hard HEAD~3
强制推至原点
git push -f origin
其他回答
正如您在上图中看到的,我想删除revert“test change 2”提交(SHA1 ID:015b5220c50e3dfbb1063f23789d92ae1d3481a2(您可以使用gitbash中的gitk命令获取SHA1 ID))。
为此,我可以使用(以下所有命令仅适用于本地。删除后需要推送):
git reset--hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2//将您备份到该提交(测试更改4提交的SHA1 ID为515b5220C50e3dfbb 1063f23799d92ae 1d3481A2)gitreset-hardHEAD~1//它在一次提交之前备份您。git reset--hard HEAD ^//从git中删除最后一次提交
删除后:
如果您还没有将提交推到任何位置,可以使用gitrebase-i删除该提交。首先,找出提交的时间(大约)有多远。然后执行以下操作:
git rebase -i HEAD~N
~N表示对最后N个提交进行重新基化(N必须是一个数字,例如HEAD~10)。然后,您可以编辑Git提供给您的文件,以删除违规提交。保存该文件后,Git将重写以下所有提交,就像您删除的提交不存在一样。
GitBook中有一个很好的部分,用图片和示例来改变基础。
但是要小心,因为如果你改变了你在其他地方推动的东西,除非你计划进行强制推动,否则需要另一种方法。
如果你是IntelliJ用户,界面简直太棒了。只需单击一次,即可立即看到效果。这个地方的快捷方式:MacOS上的Cmd+9。
要在本地分支中删除,请使用
git reset --hard HEAD~1
要在远程分支中删除,请使用
git push origin HEAD --force
git重置--硬HEAD~1你现在将处于前一个位置。拉动树枝。推送新代码。提交将从git中删除
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别