Gop*_* SA 5 svn git version-control
可能是一个非常基本的问题。但即使在阅读了多种资源后我也无法确定。
在 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
Run Code Online (Sandbox Code Playgroud)
GIT-如何?
如何在 Git 中执行上述操作?这就是我的 git 现在的样子。
~ -> git branch -l
dev_branch
* master
Run Code Online (Sandbox Code Playgroud)
重新措辞: 同意,只是创建一个标签。我的问题更多的是
“假设,如果我的 git 存储库包含主分支(用于产品部署)和开发分支(用于 QA 部署),每个分支都有不同的更改。接下来,我通过输入“git tag mytag”来创建一个标签,并将当前分支作为主分支。现在到 QA ,我需要给出命令,这些命令只会检查他们可以进行 mvn 构建的 dev 分支内容。使用相同的标签,我应该能够检查可以构建并用于产品部署的 master 分支内容”。
最后,这就是我为特定分支创建 Git 标签并为其创建 tar 所做的事情,这有助于我分别构建 qa 和 prod 代码。
质量检查_构建
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
Run Code Online (Sandbox Code Playgroud)
产品构建
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
Run Code Online (Sandbox Code Playgroud)
中的标签git与 中的标签不同svn。它们本质上相当于固定分支(即一旦创建,它们就不会随着进一步提交而移动)——只是指向简单提交的指针。因此,要创建标签,您需要执行以下两件事之一 - 如果您已经签出了要标记的提交,则可以在所在位置放置一个标签:
git tag <tagname>
Run Code Online (Sandbox Code Playgroud)
如果您不在要标记的提交处,则需要使用git log或其他某种方法来查找所需提交的 SHA 哈希值,然后您可以运行:
git tag <tagname> <sha>
Run Code Online (Sandbox Code Playgroud)
(或者您也可以git checkout <sha>; git tag <tagname>,但这是不必要的签出,如果您忘记重新签出到未来开发工作想要的位置,可能会导致混乱。