4

可能是一个非常基本的问题。但即使在阅读了多个资源之后,我也无法确定。

在 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 包含 master 分支(用于产品部署)和 dev 分支(用于 QA 部署),每个分支都有不同的更改。接下来,我通过键入“git tag mytag”来创建一个标签,并将当前分支作为 master。现在到 QA,我需要给出的命令只会检查他们可以在其上进行 mvn 构建的 dev 分支内容。使用相同的标签,我应该能够检查可以构建并用于产品部署的主分支内容。”

最后,这就是我为特定分支创建 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
4

3 回答 3

5

中的标签与git它们中的标签不同svn。它们本质上等同于固定分支(即一旦创建它们就不会随着进一步的提交而移动)——只是一个指向简单提交的指针。因此,要创建标签,您可以执行以下两项操作之一 - 如果您已经签出要标记的提交,则可以将标签放在您所在的位置:

git tag <tagname>

如果您不在要标记的提交处,则需要使用git log或其他方法来查找所需提交的 SHA 哈希,然后您可以运行:

git tag <tagname> <sha>

(或者,您可以git checkout <sha>; git tag <tagname>,但这是不必要的结帐,如果您忘记重新结帐到您希望将来的开发工作的位置,可能会造成混乱。

于 2012-09-21T15:08:00.343 回答
3

你不能。

Atag是点 a <commit-id>。标签独立于分支而存在。

于 2017-10-04T16:53:09.433 回答
0

可以标记最新版本latest(等),然后在每次发布时删除并重新创建它。

然而,这不是使用标签的正常方式,即作为固定位置,但只要所有团队都了解哪些标签是固定的,以及哪些标签漂浮在你周围就可以了。

于 2012-09-21T21:31:37.700 回答