我们正在寻找一种在我们的Web部署过程中使用git的简洁方法。我们想要做的就是能够拥有一个名为release的分支,基本上每当我们部署时,它只是从该分支部署代码。这似乎很容易,因为我们必须将它们的变化合并到发布分支中,并且还为该版本创建另一个分支(当时将匹配发布分支)(因此称为1.1.1的分支)。问题是关于在需要回滚时我们可以做些什么。所以说我们有分支1.1.0和1.1.1。我们发布1.1.2并将这些更改合并到发布分支中,并创建另一个名为1.1.2的分支。我们需要注意一个需要用来回滚到版本1.1.1的makor bug。是否有一个干净的方法让发布分支指向1.1.1
似乎理想的解决方案是有某种方式来拥有一些东西(无论是分支,标签,等等),我们实际上并没有推送任何东西,我们只是用它来指向另一个分支。这样,当新版本出现时,我们为该版本创建一个分支,并将该版本指向该分支。如果我们需要回滚,我们只需将版本切换到指向最后一个知道工作分支。这样的事情是可能的。
答案 0 :(得分:1)
只需创建一个名为currently_live
的标记或类似的标记,并将其指向特定的提交,这样就可以了解当前所有的内容。
这将完全独立于您的分支策略,理想情况下,这些策略将具有主分支和单独的版本化分支。
使用git tag -f ...
,您可以在需要时移动标记。
答案 1 :(得分:1)
Git中的分支只是指向特定代码版本的指针。因此,您可以拥有release
分支,并将任何给定版本的代码推送到该分支。现在,Git通常会确保您推送到分支机构的任何新内容都是该分支上已有的内容,以防止您意外丢失历史记录。但是如果您使用的是release
之类的分支,您打算在其中降级,则可以通过在推送时向refspec添加+
来覆盖它。
假设您有标记v1.1.1
和v1.1.2
,并且您希望将版本降级为v1.1.1
。我还假设您的部署远程名为deploy
,并且它有一个名为release
的分支,将在您的部署过程中检出。你可以写:
git push deploy +v1.1.1:release
答案 2 :(得分:0)
我会将更改还原为新提交(git revert
)并将其称为“1.1.3”。这可以避免混淆,为什么有人可以及时倒退:)
答案 3 :(得分:0)
使用git-update-ref
git update-ref -m "new release" --no-deref releasebranch ref:origin/maint
它还允许“ref”文件成为另一个ref文件的符号指针,方法是从“ref:”的四字节头文件序列开始。