[Dúvida] Squash de commits com overwriting
Contexto
É o seguinte, tenho um website que possui duas branches, a main
e a prod
. Faço deploy na Vercel, e configurei pra vercel sempre fazer o deploy em produção a partir da branch prod
.
Toda vez que lanço uma nova versão do site, alguns workflows no github verificam a última tag e compara com a versão no package.json
, se a versão do package.json
for mais nova, o workflow cria uma nova tag, gera o CHANGELOG.md
, cria um novo release no github, e faz o merge das alterações na branch prod
...
O Problema
Eu queria que as alterações feitas na main
, sejam mergeadas na prod
de modo que todos os novos commits sejam unificados em um só commit com o padrão "vX.X.X", assim:
Porem toda hora dá conflito. Gastei um bom tempo pesquisando por ai, e fuçando a documentação do Git, e cheguei nesses comandos:
release.yml
- name: Checkout to prod
run: git checkout prod
- name: Merge "main" to "prod"
run: git merge --squash --strategy ort --strategy-option theirs main
- name: Commit merge
run: git commit -m "v${{ steps.get_tag.outputs.tag }}"
- name: Push prod branch
run: git push origin prod
Funcionou por um tempo, mas hoje, deu problema de conflito de novo:
Dúvida
Existe um jeito mais simples de forçar o merge da main
em prod
, ignorando qualquer conflito, e com squash de commits?
Referências
- https://mateusf.com
- https://github.com/mateusfg7/mateusf.com
- https://stackoverflow.com/questions/4624357/how-do-i-overwrite-rather-than-merge-a-branch-on-another-branch-in-git/42454737#42454737
- https://stackoverflow.com/questions/40517129/git-merge-with-force-overwrite
- https://git-scm.com/docs/git-merge