我想重新使用git数据库中的提交对象,该对象当前未附加到任何分支。
场景如下:让我们称我的最后一次提交cfg = tf.ConfigProto(gpu_options=tf.GPUOptions.Experimental())
#TypeError: Parameter to MergeFrom() must be instance of same class: expected tensorflow.GPUOptions got tensorflow.GPUOptions.Experimental.
。从A
起,我开始对工作树进行更改,但很快意识到A
中存在一个需要修复的错误。我修复了该错误,并尝试修改我的提交,但未添加自A
提交以来对工作树所做的任何其他更改。我通过A
完成了此任务,然后仅分阶段修复了该错误。然后,我没有做git reset --soft HEAD^
(注意git commit -c ORIG_HEAD
),而没有做git commit -a -c ORIG_HEAD
,所以我最终添加了所有我想保留的所有其他更改。可以将修订后的提交称为-a
,以将其与原始提交区分开。
我有A'
的原始提交对象的SHA1和,并且所有blob仍然应该存在,因为这是最近的,并且我没有将任何过期标记。我正在考虑简单地编辑A
以使其指向.git/refs/heads/branch_name
,然后根据需要在工作树中暂存内容,然后重新修改提交。
在这种情况下,这将是最好的做法吗?还是有更好的方法来做到这一点?
答案 0 :(得分:1)
您可以重新指向您当前的分支名称,但是我发现只是为新分支名称创建一个更方便,更安全的方法:
git branch oops <hash>
您现在有了分支名称oops
,可以记住您手动记住的哈希ID。该名称或多或少地保护了垃圾回收器中的提交(及其所有文件,以及所有可从其获取的所有 及其所有其文件)永久-与该名称或任何其他名称一样永久使它们可访问。
(默认情况下,HEAD
和原始分支名称的引用日志使提交至少可以保留30天,因此创建新名称的时间就足够长了。)