git - 执行 git reset 后的匿名分支

标签 git branch reset

背景: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/

相关文章:

svn - 将标签复制到 SVN 中的分支

git - 功能分支仍然(或曾经)被认为是一种不好的做法吗?

arrays - 是否有内置函数来清除所有变量值

console - 我如何重置 nuget 并重新开始?

jquery - 使用 jQuery 重置多阶段表单

git - 如何将本地存储库推送到远程使用 "SourceTree"

svn - SVN 中维护分支的工具

git - 如何删除所有超过一年的 Git 远程分支?

git - 在本地从 Detached HEAD 进行一系列提交后,如何更新远程分支?

c++ - 我如何在 Gecode 中使用评价函数?