我想重新使用我的git数据库中的提交对象,该对象目前尚未附加到任何分支。
场景如下:让我们称我的最后一个提交A
。从A
开始,我开始对工作树进行更改,但是很快意识到我在A
中有一个错误,需要修复。我修复了错误,并试图修改我的提交,而无需添加自A
提交以来工作树的其他任何更改。我通过git reset --soft HEAD^
完成了此操作,然后仅上演修复错误所需的内容。然后,我意外地做了git commit -a -c ORIG_HEAD
(请注意-a
(,而不是进行git commit -c ORIG_HEAD
,因此我最终添加了我想保持未分段的所有其他更改。修改后的提交可以称为A'
,以将其与原始提交区分开。
我有A
原始提交对象的SHA1总和,并且所有斑点仍然存在,因为这是最近的,我没有标记任何有效期的东西。我正在考虑简单地编辑.git/refs/heads/branch_name
将其指向A
,然后根据需要在工作树中进行舞台,然后重新启动提交。
在这种情况下,这是最好的行动方案吗?还是有更好的方法?
you can 重新点您当前的分支名称,但我发现更容易,更安全,只是为了制作 new> new 分支名称:
git branch oops <hash>
您现在拥有分支名称oops
记住您手工记住的哈希ID。该名称保护提交(及其所有文件,以及所有其他提交的consit和所有文件(都来自垃圾收集器,或多或少永久地(如该名称或任何其他名称(使它们保持可及。
(用于HEAD
的回流和原始分支名称,默认情况下将提交活着至少30天,因此您有那么长的时间来创建新名称。(