簡體   English   中英

如何僅為特定分支創建Git標記?

[英]How to create a Git tag only for a specific branch?

可能是一個非常基本的問題。 但即使閱讀了多個資源,我也無法確定。

在SVN,我用來創建一個從分支稱為dev_branch稱為dev_tag標簽。 我還要求將dev_tag簽出到checkout_dir並進行maven構建。

SVN - 這就是我之前所做的

 ~ -> svn copy -m  svn+ssh://<repo>/branches/dev_branch/ svn+ssh://<repo>/tags/dev_tag/ 
 ~ -> svn co svn+ssh://<repo>/tags/dev_tag/ checkout_dir
 ~ -> cd checkout_dir
 ~/checkour_dir -> mvn clean package

GIT - 怎么樣?

如何在Git中執行上述操作? 這就是我的git現在的樣子。

 ~ -> git branch -l
  dev_branch
* master

重新措辭:同意,只是創建一個標簽。 我的問題更多的是

“假設,如果我讓git repo包含主分支(用於prod部署)和dev分支(用於QA部署),每個都有不同的更改。接下來,我通過鍵入'git tag mytag'並使用當前分支作為master來創建標記。現在到QA,我需要提供命令,這些命令只會檢查他們可以在mvn上構建的開發分支內容。使用相同的標記,我應該能夠檢查可以構建並用於prod部署的主分支內容“。

最后,這就是我為特定分支創建Git標記和為同一個tar創建的標記,這有助於我分別構建qa和prod代碼。

QA_BUILD

git clone -b dev_branch gitserve:repo.git qa
cd qa
tag -a qa_tag
git commit -a
git push --tags
git archive --format=tar --remote=gitserve:repo.git tags/qa_tag > /tmp/qabuild/qa.tar
cd  /tmp/qabuild
tar -xvf qa.tar
mvn clean package

PROD_BUILD

git clone -b master gitserve:repo.git prod
cd prod
tag -a prod_tag
git commit -a
git push --tags
git archive --format=tar --remote=gitserve:repo.git tags/prod_tag > /tmp/prodbuild/prod.tar
cd  /tmp/prodbuild
tar -xvf prod.tar
mvn clean package

git中的標簽與svn標簽不同。 它們本質上等同於固定分支(即一旦創建它們就不會隨着進一步的提交而移動) - 只是指向簡單提交的指針。 因此,要創建標記,您可以執行以下兩種操作之一 - 如果您已經簽署了要標記的提交,則可以將標記放在以下位置:

git tag <tagname>

如果您不在標記的提交中,則需要使用git log或其他方法來查找所需提交的SHA哈希,然后您可以運行:

git tag <tagname> <sha>

(或者你可以git checkout <sha>; git tag <tagname> ,但這是一個不必要的結賬,如果你忘記重新結賬到你想要進行未來開發工作的地方,可能會引起混淆。

你不能。

tag是指向<commit-id> 標簽獨立於分支存在。

這是可能的標記最新發布latest (等),然后刪除,並在每次有一個釋放時間重新創建。

然而,這不是標簽使用的常規方式,這是固定的位置,但只要所有團隊都了解哪些標簽是固定的,以及哪些標簽漂浮在你周圍應該沒問題。

暫無
暫無

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

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