簡體   English   中英

git分支只是標簽嗎?

[英]Are git branches just tags?

我注意到git能夠簽出特定的提交。 在那之后,我開始明白git是如何運作的。

但我想確定這是正確的:當我創建一個分支時,它只不過是一個指向當前提交的標記。 當我簽出這個分支時,我會檢查這個“標簽”指向的提交。 現在,當我提交某些內容時,會創建一個新提交。 現在已檢出的分支標記現已更新,因此它指向新的提交。

所以...事實上,我可以手動完成所有這些,對吧? 這只是讓事情變得簡單的一個功能。

是的,這是分支機構的好模型。 但要注意術語 - git也有標簽的概念,但標簽不會移動 - 它們永遠指向相同的提交。


更新:添加更多細節,這可能是有趣的...

您當前的分支存儲在HEAD文件中,該文件指向分支,在這種情況下,內容如下所示:

ref: refs/heads/master

...或者它直接指向提交,在這種情況下,內容將如下所示:

2b45553eec2019594724dcbb4c252a74cbb5f38e

在前一種情況下,分支master在您創建新提交時是高級的,但在后一種情況下(由於顯而易見的原因稱為“分離的HEAD”),在創建新提交時不會更改分支。

Branch是一個引用指針,它指向當前提交,如你所說。

但你不應該互換使用這些詞,因為它們意味着別的東西。

是的,對於git,分支基本上只是對提交時的引用的引用。 正如您所指出的,您可以自己跟蹤它。

實際上,git公開了所有構建更高級抽象的低級塊。 你可以使用像git hash-objectgit mk-treegit commit-tree來手動執行git addgit commit如果你想要的話)(參見Git Book中的Raw Git章節,了解如何操作)詳情)。

另請注意,git有兩種標記。 輕量級標簽只是提交(通過其哈希)不會自動移動的引用。 標記對象的概念也是真正的git對象,像提交一樣存檔,並且可以包含消息和簽名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM