我只想删除git日志中间的特定提交。它不应该受到上述承诺的影响。如何删除git日志中仅有的特定提交
3
A
回答
2
如果提交没有推送到远程服务器,您可以使用git rebase
来修改git历史记录。
你可以这样做:
git rebase -i commit-hash^
它会显示所有提交的名单。第一行应该是你想要删除的提交。从您编辑的文件中删除该行,保存并关闭。
如果您在此之前确实推送到远程服务器,请注意,刚刚删除的提交之后的提交将基于您刚从历史记录中删除的提交之前的提交而被重写。出于这个特殊原因,所有的提交都会因为你的历史发生分歧而改变。所以如果你试图推动它,它不会快进,你将不得不强制推动。
因此,如果您不熟悉git rebase
我建议让分支指向您正在修改历史记录的分支以免出现问题。另外,如果该特定提交在多个分支间共享,则分支一个分支的历史将导致多个问题,因为您将无法轻松地将一个分支从旧历史合并到新历史记录中的分支。它将复制许多提交,并且您在一个分支中删除的提交不会在其他分支中被删除。
认为它有修改git历史就像时间旅行。任何一点变化都会创造一个新的平行宇宙。过去改变之后的一切都会受到你过去所做的改变的影响。
5
它不应该受到上述提交影响。
如果您从一个分支的中间提交,还是真的在任何地方,除了一个分支可能是HEAD,你会改写该分支的历史。这是因为用于实现此目的的工具,即git rebase -interactive
和git filter-branch
,需要重新提交删除提交后的所有内容。对于公共分支机构来说,这通常是不可取的,因为这会迫使每个人采取非常严厉的措施来跟上这一变化。
相反,你一个更安全的赌注是使用git revert
:
git revert <SHA-1 of commit to delete>
这将添加一个新提交您分支的顶部,有效地撤销这中间提交所做的一切。
顺便说一句,如果你真的想要删除该提交,我会建议做一个交互式底座。
相关问题
- 1. Git:我如何从分支中删除特定的提交
- 2. 如何删除git中的特定提交?
- 3. 如何删除本地git仓库中的特定提交?
- 4. GIT:删除提交日志一半,但把所有旁白
- 5. git看提交id的提交日志
- 6. 如何删除特定的提交?
- 7. 如何删除Git中的旧提交?
- 8. Git日志 - 如何列出所有不以特定单词开头的提交
- 9. 如何在没有特定提交的情况下搜索git日志
- 10. Git日志列表提交特定于某个日期
- 11. 删除Android中的特定日志行
- 12. Git - 删除提交
- 13. PHP获取特定提交的Git更改日志
- 14. 特定文件的git日志缺失提交
- 15. 在Git中删除提交
- 16. 如何仅获取特定分支的Git日志?
- 17. 如何在使用“git merge”时仅合并没有提交日志的更改?
- 18. 如何删除没有指定分支的git提交?
- 19. 如何删除对git的提交
- 20. 如何编辑过去的git提交从提交日志中删除我的密码?
- 21. git diff-tree显示删除但没有删除git日志
- 22. 过滤git日志以仅显示提交提示
- 23. 叉特定的git日志
- 24. git的删除提交
- 25. 如何显示给定提交的git日志历史记录
- 26. journalctl - 删除特定单元的日志
- 27. 我如何只提交Git删除?
- 28. Git如何从树中删除选定的提交?
- 29. 如何在Git中删除旧的提交没有冲突
- 30. 删除具有多个分支的git历史记录中的特定提交?
从本地副本或远程? – Marusyk