Para aqueles que ainda procuram uma resposta simples, confira git cherry . Ele compara diffs reais em vez de confirmar hashes. Isso significa que ele acomoda confirmações que foram escolhidas ou refazidas com cereja.
Primeiro faça o checkout do ramo que você deseja excluir:
git checkout [branch-to-delete]
então use git cherry para compará-lo ao seu ramo de desenvolvimento principal:
git cherry -v master
Exemplo de saída:
+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message
- 85867e38712de930864c5edb7856342e1358b2a0 Yet another message
Nota: O -v
sinalizador deve incluir a mensagem de confirmação junto com o hash SHA.
As linhas com o '+' na frente estão no ramo a excluir, mas não no ramo mestre. Aqueles com um '-' na frente têm um commit equivalente no master.
Para APENAS os commits que não estão no master, combine cherry pick com grep:
git cherry -v master | grep "^\+"
Exemplo de saída:
+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message