首页 > 解决方案 > 如何意外创建分离提交?

问题描述

我知道可以在分离的 HEAD 状态下创建分离提交。但是由于 git 本身的工作,这些提交是如何创建的呢?我的意思是无意的。我听说它与提交的不变性有关......

标签: git

解决方案


听起来你只是在问你如何最终得到一个无法从任何分支访问的提交。有很多方法。

如果使用commit --amend,则无法真正修改提交。取而代之的是一个新的提交,就像没有 一样--amend,除了不同的父列表。(如果P是常规提交P的父级,则复制父级列表并将其用作新提交的父级列表。)然后将当前分支移动到P无法访问的新提交(因为它没有用作家长)。除非P仍然可以从其他分支访问,否则这就是您所说的“分离提交”。

或者你可以变基,重写任意数量的提交。同样,“重写”意味着创建新的提交,典型的变基可能会移动一个分支并使原始提交无法访问。

或者您可以使用git reset“取消提交”更改;再次,提交并没有真正删除,它只是变得无法访问。

或者您可以简单地删除一个分支。

filter-branch或者您可以使用或类似工具执行各种操作。


推荐阅读