背景: 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 res后的匿名分支,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2384232/