如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
资料来源:https://gist.github.com/sagarjethi/c07723b2f4fa74ad8bdf229166cf79d8
删除上次提交
例如,您最后一次提交
git推送原点+aa61ab32^:主
现在您要删除此提交,然后使用以下简单方法
步骤
首先将分支重置为当前提交的父级用力将其推至遥控器。
git reset HEAD^--硬git推送原点-f
对于特定的提交,您希望重置如下
git reset bb676878^ --hard
git push origin -f
其他回答
我附上这个答案是因为我不明白为什么任何刚刚尝试提交工作的人都会因为使用Git时出错而想要删除所有工作!
如果您想保留您的工作,只需“撤消”提交命令(在推送到repo之前捕获):
git reset --soft HEAD~1
不要使用--hard标志,除非您希望销毁自上次提交以来正在进行的工作。
如果要修复最近的提交,可以通过以下操作撤消提交并取消其中的文件:
git reset HEAD~1
这将使存储库返回到暂存文件的gitadd命令之前的状态。您的更改将在您的工作目录中。HEAD~1指的是分支当前尖端以下的提交。
如果要取消提交N个提交,但将代码更改保留在工作目录中:
git reset HEAD~N
如果您想摆脱最新的提交,并且不想保留代码更改,可以进行“硬”重置。
git reset --hard HEAD~1
同样,如果您想放弃最后N次提交,并且不想保留代码更改:
git reset --hard HEAD~N
git reset --hard commitId
git push <origin> <branch> --force
PS:CommitId指的是要还原回的那个
要在本地分支中删除,请使用
git reset --hard HEAD~1
要在远程分支中删除,请使用
git push origin HEAD --force
强制更改历史记录
假设您不仅希望删除最后一次提交,而且希望删除最后n次提交中的特定提交,请执行以下操作:
gitrebase-i HEAD~<要返回的提交数>,所以如果您想查看最后五次提交,请使用gitrebase-iHEAD~5。
然后在文本编辑器中,将单词pick更改为放置在要删除的每个提交旁边。保存并退出编辑器。瞧!
附加更改历史记录
尝试git-restore<commit hash>。Revert将创建一个新的提交,以撤消指定的提交。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别