如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
如果要保留历史记录,显示提交和还原,应使用:
git revert GIT_COMMIT_HASH
输入消息解释为什么要回复,然后:
git push
当您发出gitlog时,您将看到“错误”的提交和还原日志消息。
其他回答
上面的所有命令都会像提交之前一样恢复工作树和索引的状态,但不会恢复存储库的状态。如果您查看它,“已删除”提交实际上并没有被删除,它根本不是当前分支顶端的提交。
我认为没有办法用瓷命令删除提交。唯一的方法是从日志和reflog中删除它,然后执行git prune--expire-now。
我附上这个答案是因为我不明白为什么任何刚刚尝试提交工作的人都会因为使用Git时出错而想要删除所有工作!
如果您想保留您的工作,只需“撤消”提交命令(在推送到repo之前捕获):
git reset --soft HEAD~1
不要使用--hard标志,除非您希望销毁自上次提交以来正在进行的工作。
这里有30多个回答者,我将简单介绍适合我的答案
删除.git文件夹可能会导致git存储库出现问题。如果您希望删除所有提交历史记录,但将代码保持在当前状态,则可以按照以下方式进行操作:
结账
git checkout --orphan latest_branch
添加所有文件
git add -A
提交更改
git commit -m "commit message"
删除分支
git branch -D master
将当前分支重命名为主分支
git branch -m master
最后,强制更新存储库
git push -f origin master
PS:这不会保留您以前的提交历史。
如果您已经推送,请首先在HEAD($GIT_commit_HASH_HERE)找到您想要的提交,然后运行以下命令:
git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force
然后,在复制了回购的每个位置,运行:
git reset --hard origin/master
将代码备份到临时文件夹。以下命令将重置服务器。
git reset --hard HEAD
git clean -f
git pull
如果要保留更改并删除最近的提交
git reset --soft HEAD^
git pull
推荐文章
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- Git错误:遇到7个文件应该是指针,但不是