Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅为特定分支创建Git标记?_Git_Svn_Version Control - Fatal编程技术网

如何仅为特定分支创建Git标记?

如何仅为特定分支创建Git标记?,git,svn,version-control,Git,Svn,Version Control,可能是一个非常基本的问题。但是,即使在阅读了多种资源之后,我也不能确定 在SVN中,我曾经从名为 开发分支机构。我还需要将dev_标记签出到 签出目录并进行maven构建 SVN-这是我之前做的 重新措辞: 同意,w.r.t只是创建一个标签。我的问题更多的是关于 “假设,如果我让git回购包含主分支(对于prod 部署)和开发分支(用于QA部署),每个分支具有不同的 下一步,我用当前的 分支作为主控。现在对于QA,我需要发出命令 仅签出他们可以在其上进行mvn构建的开发分支内容。 使用相同的标签

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

在SVN中,我曾经从名为 开发分支机构。我还需要将dev_标记签出到 签出目录并进行maven构建

SVN-这是我之前做的

重新措辞:
同意,w.r.t只是创建一个标签。我的问题更多的是关于

“假设,如果我让git回购包含主分支(对于prod 部署)和开发分支(用于QA部署),每个分支具有不同的 下一步,我用当前的 分支作为主控。现在对于QA,我需要发出命令 仅签出他们可以在其上进行mvn构建的开发分支内容。 使用相同的标签,我应该能够签出主分支 可构建并用于产品部署的内容。”

最后,我为特定的分支创建了Git标记,并为相同的分支创建了tar 这有助于我分别构建qa和prod代码

QA_构建

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
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 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
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 checkout;git tag
,但这是一种不必要的签出,如果您忘记重新签出到未来开发工作所需的位置,则可能会造成混乱。

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


但是,这不是使用标签的正常方式,它是作为固定位置使用的,但是只要所有团队都知道哪些标签是固定的,哪些标签在您周围浮动,就可以了。

您不能。


tag
是一个
点。标记独立于分支存在。

这是一种非常奇怪的使用标记的方式,
最新的
应该是一个稳定分支的分支尖端,就像在@CharlesB中,人们可能会很奇怪。有些人会发现一个标记(甚至可能是签名的)更合适。我猜他们会担心人们可能会给他们当地的马厩分店起不同的名字而感到困惑。品味是无法解释的。我找不到模仿传统行为的好建议……只是我的意见,though@CharlesB,我接受。Git(DVCS)与传统方法不同。同意,w.r.t只是创建一个标记。我的问题更多的是“假设,如果git repo包含主分支(用于产品部署)和开发分支(用于QA部署)每个分支都有不同的更改。接下来,我通过键入“git tag mytag”创建一个标记,当前分支作为主分支。现在对QA来说,我需要给出一些命令,这些命令将只签出开发分支内容,它们可以在这些内容上进行mvn构建。使用相同的标记,我应该能够签出可以构建并用于prod deploy的主分支内容“是的。”也许我还不明白你在寻找什么——我读你的措辞的方式,听起来你想要一个标签来检查两个独立的分支?如果是这样的话,我认为那是不可能的,除非你完全忽略分支,只把dev和prod放在两个独立的目录中,这样会少很多我认为这并不理想。一个标记指向一个提交,它位于历史图表中的一个特定位置。不过,根据合并情况,它可能最终位于多个分支上。我在文章底部添加了这些命令。我认为这会让事情变得更清楚
git tag <tagname> <sha>