6

背景: 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与其他人共享了该项目在不进行硬重置的情况下做同样(或类似的事情)的替代方法是什么?

4

2 回答 2

4

使用 Git 恢复丢失提交的图解指南中所述,您可以恢复“丢失的”提交(如“不再被分支或标签引用”)。
这就是为什么它们仍然出现在 gitk 中的原因。
例如,一个:

$ git fsck −−lost-found

也会显示它们。

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

 $ git gc --aggressive
 $ git prune

另请参阅git gc: clean up after yourself


如果该分支已被共享,则可能的替代方法是 agit revert以使新的提交取消之前的 n 个提交。

于 2010-03-05T05:15:38.470 回答
3

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

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

git checkout -b my_branch 123e43e

现在您的分支是非匿名的。您可以在主分支中合并或重新设置它

于 2010-03-05T07:59:24.343 回答