预发布版本可以通过在补丁版本之后立即附加破折号和一系列点分隔标识符来表示.示例:1.0.0-alpha,1.0.0-alpha.1,1.0.0-0.3.7,1.0.0-x.7.z.92.
出于消除歧义的目的,标记发布提交(从主分支提交)的"正确"方法是什么?
一些想法
v1.7.2-release
v1.7.2-master
v1.7.2-prod
v1.7.2-official
v1.7.2-stable
Run Code Online (Sandbox Code Playgroud)
在git中添加新标记时,我想在$ EDITOR激活之前自动修改默认(空)标记消息 - 类似于git允许通过prepare-commit-msg钩子准备提交消息的方式.
例如:
git tag -s v1.2.3
Run Code Online (Sandbox Code Playgroud)
应该用预填充的内容打开我的编辑器,如下所示:
Release v1.2.3:
* Dynamically generated message 1
* Dynamically generated message 2
Default standard text.
#
# Write a tag message
# Lines starting with '#' will be ignored
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?不幸的是,prepare-commit-msg钩子不能用于标记消息.(或者这个,或者我太笨了,无法知道如何去做.)
我有一个git项目有一个很大的根目录:
C:\MyProject\MyProject
C:\MyProject\.git
Run Code Online (Sandbox Code Playgroud)
然后所有文件和子目录都在里面C:\MyProject\MyProject.我想删除那个多余的根目录,所以我使用了这个命令:
git subtree split -P MyProject -b MyBranch
git checkout MyBranch
git branch -D master
git branch -m MyBranch master
Run Code Online (Sandbox Code Playgroud)
但是,此解决方案存在问题 - 标记仍附加到现已删除的原始主分支:

灰色分支是原始主分支,红色分支是没有冗余目录的新分支,但标记仍然附加到旧分支的签入.
在发布时,我检查了以前发布的标签,并在其中挑选了新项目(使用git cherry-pick <commit-id>)。然后,我使用git tag <tag-name>.
这会影响我精心挑选的旧标签吗?
如何列出可从给定提交访问的所有标签?
对于所有分支,它都是git branch --all --merged <commit>。对于最近的标签,它是git describe.
手册页git-tag建议git tag -l --contains <commit> *,但此命令不显示我知道可以访问的任何标签。
我了解如何使用git标记来标记blob,树或什至另一个带注释的标记。我了解使之成为可能的架构和概念设计。
但是,我很难想到这个的实际应用程序(或“实际工作流”应用程序)。
在此处的Stack Overflow上搜索时,我仅找到一个答案,其中提到标记未提交的对象,建议不要这样做。
在什么可能的情况下,可以把它永远是适当的标记非承诺对象?
我试图从我树中的某个点获取最新的git标签.
树看起来如下:
* 334322c|2016-12-06| (tag: 0.1265, tag: 0.1264) (18 hours ago)
* 739392e|2016-12-06| (HEAD -> testbranch, tag: 0.1263, tag: 0.1262) (19 hours ago)
* 8ec1add|2016-12-06| (tag: 0.1261, tag: 0.1260, tag: 0.1259) (20 hours ago)
* 5b2667b|2016-12-06| (tag: 0.1258) (21 hours ago)
* c7ff4bc|2016-12-06| (tag: 0.1257, tag: 0.1256) (22 hours ago)
Run Code Online (Sandbox Code Playgroud)
0.1263 是我正在寻找的git标签.
当739392e使用git describe --tags返回时0.1262,它只是该提交的第一个标记,而我没有得到所有候选者.
当739392e使用git describe --tags $(git rev-list --tags --max-count=1)return时0.1265,树上的最新标记(无论HEAD在哪里).
我想删除我的项目的所有 Git 标签,我将其git tag -d用于本地标签,然后将其推送到origin,因此origin也删除了其中的标签。
事实上,如果我运行git tag -l或git ls-remote --tags origin然后不显示标签。
但是,我的构建设置为每当我推送时,都会在 Jenkins 中触发构建。当在运行 Jenkins 的机器上触发构建时,git tag -l会显示几个标签。
如何删除这些标签?
我了解人们总是需要一条消息来提交更改,但是何时以及为什么还需要标记一次提交?假设我进行了一些更改并使用
git add -A
git commit -m "add feature 1"
Run Code Online (Sandbox Code Playgroud)
现在
git tag -a -m "includes feature 1" v0.1
Run Code Online (Sandbox Code Playgroud)
问题是,何时才有意义。
我正在使用 Cake 脚本通过持续集成在 Azure DevOps 中构建我的软件。要求是当我们提交/合并到 dev 或 master 分支时,适当的构建管道被启动。作为此构建的一部分,我们需要自动标记和版本我们的软件。我的蛋糕脚本中已经有以下代码可以使用 GitVersion 将语义版本控制添加到我的构建中:
Task("Version")
.Does(() =>
{
Information("Versioning software for configuration {0} of {1}...", configuration, solution);
GitVersion(new GitVersionSettings {
UpdateAssemblyInfo = true,
OutputType = GitVersionOutput.BuildServer,
WorkingDirectory = toolsDirectory
});
GitVersion versionInfo = GitVersion(new GitVersionSettings{ OutputType = GitVersionOutput.Json });
Information("Semantic Version: " + versionInfo.AssemblySemVer);
Information("Full Semantic Version: " + versionInfo.AssemblySemFileVer);
Information("Informational Version: " + versionInfo.InformationalVersion);
});
Run Code Online (Sandbox Code Playgroud)
我希望团队负责人或权威人士在此代码与分支合并之前增加主要和次要构建版本。或者我希望管道自动对软件和我们在构建管道末尾创建的最终 zip 工件进行版本控制。
所以这里是我的问题:
这有点宽泛,但我正在努力寻找在 …
git ×10
git-tag ×10
azure-devops ×1
cakebuild ×1
git-branch ×1
git-commit ×1
git-subtree ×1
gitversion ×1
jenkins ×1