使用git:假设我创建了一个分支,做了一些提交,然后决定我要删除分支(在合并压缩之后,一个rebase。也许我有可能想要重新审视压缩的提交有一天,所以在我删除那个分支之前,我创建了一个指向该分支的HEAD的标签。
删除分支后,我可以从该标记创建分支以恢复工作吗?好吧,这样很容易测试,但是,标签能否在Git的垃圾收集中存活下来,还是会在以后获得GC?
长篇故事(除非你好奇,否则你不需要阅读其余内容)
那么我为什么要这样做呢? 好吧,当我合并回master时,我喜欢压缩我的提交,但如果它是一个非常有意义的分支,我可能想要一种方法来回到那些单独的提交,如果在下一个sprint或3中出现问题。
所以我正在考虑将我的分支压缩回master,删除分支(因此不会混淆它是否处于活动状态,是否需要合并,或者是否应该进行新的提交),然后保持一个标签,以便我可以重新创建分支,如果出现某种需要。这种标记技巧会起作用吗?
答案 0 :(得分:4)
来自git manual:
git gc非常努力地保护它收集的垃圾。特别是,它不仅会保留当前分支集和标记引用的对象,还会保留由refit / original中的git filter-branch保存的索引,远程跟踪分支,引用引用的对象。 /或reflogs(可能引用后来修改或重绕的分支中的提交)。
只要您的提交可以从标记中访问 - 您就是安全的。
如果你想测试一下,你应该force git to remove all unreachable objects。如果您将git gc
与默认选项一起使用,那么提交您的安全可能会在两周后消失。