背景: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 与其他人共享该项目。如果不进行硬重置,可以选择做同样的(或类似的事情)吗?
答案 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
现在您的分支机构是非匿名的。您可以在主分支中合并或重新绑定它