Faz dois anos desde a última resposta a essa pergunta e acho que agora a história muda. Para mim, a resposta é "Sempre que você usa o controle do código-fonte para rastrear versões".
Para elaborar, hoje em dia, o rastreamento de versões de projetos com controle de código-fonte nem sempre funciona. (por exemplo, usando o npm para gerenciar a dependência e especificar versões semânticas com '^'). Nesse caso, os artefatos do projeto mudam toda vez que uma construção acontece, não sendo necessário corresponder às alterações do código-fonte todas as vezes. Para lidar com esse tipo de novos desafios, algumas equipes optam por já criar 'artefatos' salvos no sistema de controle de artefatos (por exemplo, JFrog Artifactory) para acompanhar as versões do projeto.
Obviamente, quando você já possui o controle de versão de artefatos no lugar, não extrairia 'código de produção' de uma ramificação GIT e construiria / implementaria na produção; em vez disso, consulte o sistema de controle de artefatos para obter versões executáveis diretamente para implantação. Nesses casos, o conceito de "ramo de liberação" repentinamente perde seu significado. E sempre que sua equipe decide não associar git branch à versão de lançamento, comprometer / pressionar diretamente para dominar se torna uma boa escolha mais uma vez: ele vem como ramo padrão sempre que o repo é clonado, portanto, automaticamente, dada a semântica amplamente aceita e bem comunicada alterar. Ainda assim, como a resposta aceita sugere, você provavelmente deve chefiar uma função de atribuição a ramificações, incluindo mestre, e usá-las apenas para essas funções específicas.
Por fim, vou um passo adiante e sugiro usar o mestre como ramo de desenvolvimento em projetos com apenas alguns dos principais committers. Qual é o caso da minha equipe e provavelmente o mesmo para a maioria das lojas de micro-serviços. A confirmação no mestre remove o processo de comunicação das alterações e potencialmente evita o 'inferno de mesclagem' ao trabalhar em recursos em vários sprints. Além disso, o código no ramo mestre nem precisa 'trabalhar', o processo automatizado de compilação / teste dirá o que deu errado e, de qualquer forma, é fácil verificar o histórico do git e entrar em contato com o autor que quebrou a compilação / teste :-)