我創建了一個新標簽v1.0.0并 git 標記了 commits a, b, c, dwith v1.0.0。a, b, c, d是提交 ID:
d -> Newest
c
b
a -> Oldest
這是一個示例存盤庫:
但我只想標記提交a并b使用v1.0.0. 我該怎么做呢?
uj5u.com熱心網友回復:
一個 git 標簽指向一個提交
查看每個提交如何用 v1.0.0 標記。
問題中的這句話是對 github 顯示的資訊的誤解或歪曲。
commitsa和它們是標簽的一部分,b它們沒有被“標記” ——這種術語上的差異可能看起來很迂腐,但它是問題和評論中混淆的根源(現在可以全部洗掉),標簽只能指向一次提交。c1.0.01.0.0
一個加強這一點的例子,考慮以下回購:
? git init
Initialized empty Git repository in /private/tmp/so/.git/
? echo "a" > README.md
? git add README.md
? git commit -m "a"
[main (root-commit) 3900dc2] a
1 file changed, 1 insertion( )
create mode 100644 README.md
? echo "b" > README.md
? git commit -am "b"
[main e5dbd9c] b
1 file changed, 1 insertion( ), 1 deletion(-)
? echo "c" > README.md
? git commit -am "c"
[main 79d52b2] c
1 file changed, 1 insertion( ), 1 deletion(-)
? echo "d" > README.md
? git commit -am "d"
[main 5d6e012] d
1 file changed, 1 insertion( ), 1 deletion(-)
?
這已經創建了一個帶有提交的 git 存盤庫。如果我現在創建一個標簽并查看歷史記錄:
? git tag v1.0.0
? git log --graph --decorate --oneline
* 5d6e012 (HEAD -> main, tag: v1.0.0) d
* 79d52b2 c
* e5dbd9c b
* 3900dc2 a
有 4 個提交,其中一個( d) 也是標簽 1.0.0 - 其他提交是d, 和標簽的祖先。
標簽實際上只是一個檔案 - 它可以免費查看:
? cat .git/refs/tags/v1.0.0
5d6e012b898e87617a9e1d138cd072fa96053009
如何標記非頭部?
我只想用 v1.0.0 標記提交 a 和 b。我該怎么做呢?
改寫以匹配 git 術語:“如何v1.0.0為提交創建標簽b?”
這很容易做到,所有這些都可以通過github 的 ui完成,但我將在這里演示 cli 步驟:
- 本地洗掉不正確的標簽
? git tag -d v1.0.0
- 洗掉遙控器上不正確的標簽
? git push --delete origin v1.0.0
- 在本地創建正確的標簽
? git tag v1.0.0 e5dbd9c # the sha for commit "b"
請注意,本地狀態現在是:
? git log --graph --decorate --oneline
* 5d6e012 (HEAD -> main) d
* 79d52b2 c
* e5dbd9c (tag: v1.0.0) b
* 3900dc2 a
- 用標簽更新遙控器
? git push --tags
并做了 :)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497136.html
