背景: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 与其他人共享了该项目。在不进行硬重置的情况下做相同(或类似的事情)的替代方案是什么?
最佳答案
如 The illustrated guide to recovering lost commits with Git 中所述,您可以恢复“丢失”的提交(如“不再被分支或标记引用”)。
这就是为什么它们仍然出现在 gitk 中的原因。
例如,一个:
$ git fsck −−lost-found
也会显示它们。
清理它(假设您没有可以从任何其他删除操作中恢复)
$ git gc --aggressive
$ git prune
另见 git gc: cleaning up after yourself .
如果该分支已共享,则可能的替代方案是 git revert
为了进行新的提交,取消之前的 n 个提交。
关于git - 执行 git reset 后的匿名分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2384232/