可能是一个非常基本的问题。但是,即使在阅读了多种资源后,我也无法确定。
在SVN中,我曾经从名为的分支创建名为 dev_tag 的标记 的 dev_branch 即可。我还要求将dev_tag签出 checkout_dir并做一个maven build。
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
重新措辞: 同意,w.r.t只是创建一个标签。我的问题更多的是
“假设,如果我让git repo包含主分支(对于prod 部署)和dev分支(用于QA部署)各有不同 变化。接下来,我通过使用current键入'git tag mytag'来创建标记 分支作为主人。现在到QA,我需要给出命令 只检查他们可以做mvn build的dev分支内容。 使用相同的标签,我应该能够检查主分支 可以构建和用于prod部署的内容。“
最后,这就是我为特定分支和tar创建Git标记所做的 这有助于我分别构建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
答案 0 :(得分:2)
git
中的代码与svn
中的代码不同。它们本质上等同于固定分支(即一旦创建它们就不会随着进一步的提交而移动) - 只是指向简单提交的指针。因此,要创建标记,您可以执行以下两项操作之一 - 如果您已经签署了要标记的提交,则可以将标记放在您所在的位置:
git tag <tagname>
如果您不在标记的提交中,则需要使用git log
或其他方法来查找所需提交的SHA哈希,然后您可以运行:
git tag <tagname> <sha>
(或者您可以git checkout <sha>; git tag <tagname>
,但这是一次不必要的结账,如果您忘记重新结账到未来的开发工作,可能会造成混淆。
答案 1 :(得分:0)
你不能。
tag
是<commit-id>
分。标签独立于分支存在。
答案 2 :(得分:-1)
可以标记最新版本latest
(等),然后在每次发布时删除并重新创建它。
然而,这不是标签使用的正常方式,这是固定的位置,但只要所有团队都了解哪些标签是固定的,以及哪些标签漂浮在你身边就应该没问题。