Heroku tem uma política de ignorar todos os ramos, exceto o 'mestre'.
Embora eu tenha certeza de que os designers da Heroku têm excelentes razões para essa política (eu acho que otimizo o armazenamento e o desempenho), a consequência para mim como desenvolvedor é que, seja qual for o ramo de tópico local em que eu esteja trabalhando, eu gostaria de uma maneira fácil para mudar o mestre do Heroku para esse tópico local e fazer um "git push heroku -f" para sobrescrever o mestre no Heroku.
O que obtive da leitura da seção "Pushing Refspecs" em http://progit.org/book/ch9-5.html é
git push -f heroku local-tópico-ramo: refs / heads / master
O que eu realmente gostaria é de uma maneira de definir isso no arquivo de configuração para que "git push heroku" sempre faça o acima, substituindo local-topic-branch pelo nome de qualquer que seja o meu branch atual. Se alguém souber como fazer isso, entre em contato!
A ressalva para isso, é claro, é que isso só é sensato se eu for o único que pode empurrar para esse aplicativo / repositório Heroku. Uma equipe de teste ou controle de qualidade pode gerenciar esse repositório para testar diferentes filiais candidatas, mas elas precisam se coordenar para que todos concordem com qual filial estão enviando para ela em um determinado dia.
Desnecessário dizer que também seria uma boa idéia ter um repositório remoto separado (como o GitHub) sem essa restrição para fazer backup de tudo. Eu chamaria essa de "origem" e usaria "heroku" para o Heroku para que "git push" sempre faça backup de tudo para a origem, e "git push heroku" empurra qualquer ramo que eu esteja atualmente no ramo mestre do Heroku, sobrescrevendo-o se necessário.
Isso funcionaria?
[remoto "heroku"] url = [email protected]: my-app.git push = + refs / chefes / *: refs / chefes / mestre
Eu gostaria de ouvir alguém mais experiente antes de começar a experimentar, embora suponha que possa criar um aplicativo fictício no Heroku e experimentar isso.
Quanto à busca, eu realmente não me importo se o repositório Heroku é somente para gravação. Eu ainda tenho um repositório separado, como o GitHub, para backup e clonagem de todo o meu trabalho.
Nota de rodapé: Esta pergunta é semelhante, mas não é a mesma que a implantação do Good Git usando a estratégia de ramos com o Heroku?
Respostas:
Ao usar um curinga, ele deve estar presente nos dois lados do refspec, portanto
+refs/heads/*:refs/heads/master
não funcionará. Mas você pode usar+HEAD:refs/heads/master
:Além disso, você pode fazer isso diretamente com o git push :
fonte
git push
comandar fazem a mesma coisa. Vejagit push --help
o significado da-f
opção e+
no refspec.-f
significa força . Funcionou para mim com a resposta de jassa .Consulte https://devcenter.heroku.com/articles/git#deploying-code
fonte
git push :master
que exclui o ramo principal substituindo-o por nada. Isso é diferente de substituí-lo por outro ramo. Heroku provavelmente possui salvaguardas para impedir a exclusão da ramificação principal.fonte
-f
ou--force
, e é sempre melhor garantir que você saiba o que está fazendo quando pressiona.O comando mais seguro para enviar diferentes ramificações locais do Git para o Heroku / master.
Nota: Embora você possa pressionar sem usar o -f, o -f (sinalizador de força) é recomendado para evitar conflitos com os push de outros desenvolvedores.
fonte
Para mim, funciona,
fonte: - documentos oficiais
fonte
Observe também que, se você estiver usando o sistema git flow e seu ramo de recursos, pode ser chamado
e com um controle remoto git chamado stagingtwo, o comando para enviar ao heroku seria
fonte
Você deve verificar o heroku_san , ele resolve esse problema muito bem.
Por exemplo, você pode:
Também facilita a criação de novas instâncias Heroku para implantar uma ramificação de tópico em novos servidores:
E é claro que você pode fazer tarefas mais simples de rake se fizer algo com frequência.
fonte
Eu achei isso útil. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
fonte
Os laboratórios Heroku agora oferecem um complemento do github que permite especificar qual ramificação enviar.
Veja o artigo de Heroku sobre este recurso beta.
Você precisará se inscrever como um testador beta por enquanto.
fonte
Eu acho que deveria ser
push = refs/heads/*:refs/heads/*
em vez de...
fonte