0

可以用標籤固定分離頭嗎?換句話說,是否有可能阻止垃圾收集器在最後一次提交時在具有標籤的分離頭中提交提交?用標籤固定分離頭

我發現的每一篇文章都談到了在分離頭中創建分支以防止在離開另一分支之前丟失在此狀態下創建的提交。

據我所知,一個標籤和一個分支之間的主要區別在於分支移動的頭部與標籤保持完全相同的位置。

在我的場景中,我已經用SHA-1簽出,然後從這一點完成了幾個提交。在離開之前,我想寫一個書籤,我認爲就語義而言,標籤會比分支稍後回來更好。

我沒有任何問題在這一點上創建分支而不是標籤如果這是我能做的唯一的事情,但我想知道git內部與標籤和分支關係的行爲分離的頭。

另外,在概念上,如果有人不同意我關於創建標籤而不是分支,在這種情況下,解釋將不勝感激。

+1

到目前爲止您有兩個很好的答案;我會添加一條評論:這取決於你的意思* fix *。畢竟,分離的HEAD首先不會被破壞。 – torek

回答

1

是的,標籤將阻止垃圾收集的方式與分支一樣。只有不可達的提交符合垃圾回收的條件,並且git會檢查每個ref以檢查提交是否可達。

2

爲未來保存一些提交而放置標記並不正確。有,但是,一些缺點:

  • git fetchpush一些選項複製所有標籤到目標身邊,沒有任何映射。所以任何私人臨時標籤可能會以通用名稱空間結束。
  • 有太多的代碼可能會導致問題的GUI

總體來說,我要說的是,標籤更意在作爲公共永久的里程碑,例如版本。

有更多的選擇來考慮:

  • 一段時間後,提交不收集且可通過引用日誌
  • 它可以是一個分支,它是不是一個問題,如果它不改變
  • 它可以是另一個命名空間中的參考,而不是tagsbranches。這是例如什麼平分對於中間標記
  • 它可以合併到專用收集所有分支。這就是我在本地開發中使用的
+0

你的回答非常明確,但我的問題的主要部分更多的是關於防止承諾被垃圾收集。不過,我會根據你的建議考慮標籤只爲公共永久的里程碑。在這種情況下,我的經驗法則是僅將標記添加到現有分支中,並且在大多數情況下僅添加到永久分支以防止刪除將刪除標記的分支。我使用git-flow,然後,標籤將在主分支中的99%的情況下。 – Samuel