Git - 从标签取消链接提交?

时间:2016-07-25 08:59:33

标签: git

是否可以"取消链接"从标签提交? 我想要的是,我想删除其中包含标签的binary分支,如下所示;

master ----A----B----C----D
binary ----V----W----X----Y
            \    \    \    \
           tag1  tag2  tag3  tag4

我试图通过$ git push origin :binary将其删除。

此命令从远程服务器删除binary分支,但存储库大小与之前相同。

我认为这是因为标签附加到V W X Y提交。

如何在不删除标签的情况下完全删除binary分支及其内容?

2 个答案:

答案 0 :(得分:3)

答案是否定的(如果您已经推送了标签)和"是的,排序等等#34; (如果这些标记仅存在于本地存储库中)。

Git标签只是&#34;指针&#34;提交。换句话说 - 标签的内容是某个提交的ID(请$ cat .git/refs/<path to some tag>为自己查看)。您无法更改它 - 您可以做的最好是删除标记并创建新标记。

如果您推送了标签,那么它已经结束了 - 您无法再删除它们(您可以将它们从远程仓库中删除,但不会将其从用户&#39;存储库中删除)。

答案 1 :(得分:2)

标签附加到提交。删除提交而不删除附加到它的标记是没有意义的。假设有可能,标签仍然是孤儿和无用的。

  

但是存储库大小与以前相同。

假设您删除的提交未从其他对象(标记,分支,合并提交)引用,并且可以安全地删除其内容,则存储库大小不会立即更改。你必须强制它运行它的垃圾收集例程。

对于本地存储库,可以通过运行git gc来完成。我不知道如何在远程存储库上触发垃圾收集。