git reset后匿名分支是什么意思?

6

背景:Trevor正在进行一个测试项目,目的是尝试使用git。这是一个本地的单人存储库,没有被共享,所以Trevor执行了reset hard操作,以消除一些不必要的提交记录:

    :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个回答

4
如同在使用Git恢复丢失的提交的图解指南中提到的,你可以恢复“丢失”的提交(比如说“不再被分支或标签所引用”)。 这也是它们为什么会出现在gitk中的原因。 例如:
$ git fsck −−lost-found

也会显示它们。
为了清理这个(假设您没有从任何其他删除操作中获取任何内容),
 $ git gc --aggressive
 $ git prune

另请参阅 git gc:清理自己
如果那个分支被共享了,可能的替代方案就是使用git revert,以便新提交取消前面的n个提交。

3

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

如果您匿名分支中的最后一个提交是123e43,则可以执行以下操作:

git checkout -b my_branch 123e43e

现在您的分支不再是匿名的。您可以将其合并或变基到主分支中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接