Esses dias precisei fazer uma tarefa que ao meu ver não é trivial (pois não domino o Git). O estado da minha branch master era tipo esse:
- Commit 17
- Commit 16
- Commit 15
- Commit 14
.
.
.
.
- Commit 2
- Commit 1
Normal. Então eu precisava gerar uma tag stable e mandar pra produção, mas na master alguns commits (3, 6 e 14) não podiam entrar em produção em hipótese alguma.
Minha primeira solução seria fazer cherry pick do que poderia entrar no stable a partir da master.
Mas fazer cherry pick do 2 ao 17, só por causa de 3 commits, cansa.
Aí encontrei uma alternativa no rebase. Dado que tenho uma branch temporária igualzinha a master, faço o rebase no modo interativo, e APAGO as linhas/commits que não podem entrar no rebase.
git rebase -i [commit 2]~1
Irá abrir um arquivo editável:
Apagar, por exemplo, as linhas 3, 6 e 14, e salvar o arquivo (Deletar uma linha irá apagar o commit pra sempre):
Daí é só bater e tag stable e ser feliz :-)