执行git reset后的匿名分支

时间:2010-03-05 02:42:12

标签: git branch reset

背景:Trevor正在尝试一个测试项目,仅仅是为了尝试git。这是一个尚未共享的本地单人存储库,因此Trevor为了消除一些不需要的提交而进行了重置:

    :git reset --hard 6aa32cfecf4
    HEAD is now at 6aa32cf auto commit Sun Feb 28 16:00:10 -0800 2010

然后Trevor愉快地为项目添加了新的提交。然后,当Trevor查看提交历史的图形表示时,Trevor发现似乎存在被删除提交的匿名分支。它不会显示为使用git branch的分支,但它确实显示在GUI中。

问题1: Trevor如何摆脱这个“匿名分支”...... Trevor真正关注的是什么?有什么指示可以帮助Trevor了解Trevor在重置时所发生的事情,这样Trevor可以更好地设定Trevor的期望。

问题2:假设Trevor 与其他人共享该项目。如果不进行硬重置,可以选择做同样的(或类似的事情)吗?

2 个答案:

答案 0 :(得分:4)

The illustrated guide to recovering lost commits with Git 中所述,您可以恢复“丢失”提交(如“不再由分支或标记引用”)。
这就是为什么他们仍然出现在gitk中 例如,a:

$ git fsck −−lost-found

也会显示它们。

要清除它(假设你没有没有从任何其他删除操作中恢复)

 $ git gc --aggressive
 $ git prune

另见git gc: cleaning up after yourself


如果该分支已被共享,则可能的替代方案是 git revert ,以便使新提交取消先前的提交。

答案 1 :(得分:3)

您可以通过提交创建一些新分支。

如果你在匿名分支中的最后一次提交是123e43,你可以这样做:

git checkout -b my_branch 123e43e

现在您的分支机构是非匿名的。您可以在主分支中合并或重新绑定它