簡體   English   中英

如何使用refspec將Git標簽推送到分支?

[英]How do you push a Git tag to a branch using a refspec?

我想強制推送,例如,我的標簽1.0.0到我的遠程master分支。

我現在正在做以下事情:

git push production +1.0.0:master

我想強制推送 ,因為我關心的是1.0.0標記內的代碼被推送到遠程存儲庫上的master分支。

我究竟做錯了什么?

更新#1

當我通過SSH連接到我的Git存儲庫所在的服務器並執行git branch -l ,我也看不到列出的master分支。

更新#2

從遠程Git存儲庫中運行git tag -l后,我看到master已列出,這意味着當我運行以下命令時:

git push production 1.0.0:master

它實際上推送了標簽並創建了一個名為 master的標簽,而不是一個新的分支

我想基本上將標簽1.0.0內容推送到遠程Git存儲庫的master分支。

git push --tags production

我像這樣創建標簽然后將其推送到GitHub:

git tag -a v1.1 -m "Version 1.1 is waiting for review"
git push --tags

Counting objects: 1, done.
Writing objects: 100% (1/1), 180 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1

它可能失敗了,因為1.0.0是一個帶注釋的標簽。 也許您看到以下錯誤消息:

錯誤:嘗試將非提交對象寫入分支refs / heads / master

帶注釋的標簽有自己獨特的對象類型,指向標記的提交對象。 分支無法有效地指向標記對象,只能提交對象。 您需要將帶注釋的標簽“剝離”回提交對象並推送它。

git push production +1.0.0^{commit}:master
git push production +1.0.0~0:master          # shorthand

還有另一種語法在這種情況下也可以工作,但如果標記對象指向除提交之外的東西(或指向(指向...的標記對象)提交的標記對象,則意味着略有不同) 。

git push production +1.0.0^{}:master

這些標記剝離語法在指定修訂版下的git-rev-parse(1)中描述。

推送單個標簽: git push <reponame> <tagname>

例如, git push production 1.0.0 標簽不綁定到分支,它們綁定到提交。

如果要在主分支中包含標記的內容,請在計算機上本地執行此操作。 我假設你繼續在你當地的主分公司開發。 那么只需要一個git push origin master

暫無
暫無

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

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