我们的自动安装脚本应该像这样工作:
回滚脚本应该像这样工作:
production
分支 如何做粗体部分?我知道如何获取之前的 commit (~1),但是如何获取被标记的那个?
答案 0 :(得分:2)
git describe --tags --abbrev=0 <commit>
会从提交中提供最新的标记。
答案 1 :(得分:1)
你需要某种约定来完成这项工作。到目前为止,您知道您想要找到一个可从分支到达的标记,并且它应该是您找到的第一个标记(不计算当前版本的标记?如果可以从{{1}访问该标记,我不清楚} ...但无论如何......)
这还不足以继续git。
一种解决方案是在“先前版本”上始终具有特定标签。回滚步骤2将执行production
,释放步骤4将是“如果我们没有回滚,则移动git checkout prev_release
标记”。
或者,如果您的构建服务器保留其repo并且始终将其签出到最新的生产版本,那么您可以使用reflog。 prev_release
。如果您在签出新版本的标签之前重新克隆,则无法使用。 (我不清楚,因为你说“克隆一些特定的标签”,这是一种不精确的语言。你签出一个特定的标签,你可以使用git checkout -
选项{{1} }。)
或者,如果您的标记名称遵循模式,则可以计算以前的标记名称(但如果标记是版本号,通常这不是一个可靠的想法)。
或者,如果你使用像gitflow这样的东西,你的生产分支上的每个提交都是一个版本,你可以说-b
(或clone
如果你已经合并了新版本)。这是关于gitflow的非常好的事情之一。