Para aquellos que todavía buscan una respuesta simple, echa un vistazo a git cherry . Compara las diferencias reales en lugar de los hash de confirmación. Eso significa que tiene en cuenta los compromisos que se han seleccionado o rebajado.
Primero revise la rama que desea eliminar:
git checkout [branch-to-delete]
luego use git cherry para compararlo con su rama de desarrollo principal:
git cherry -v master
Salida de ejemplo:
+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message
- 85867e38712de930864c5edb7856342e1358b2a0 Yet another message
Nota: El -v
indicador debe incluir el mensaje de confirmación junto con el hash SHA.
Las líneas con el '+' al frente están en la rama para borrar, pero no en la rama maestra. Aquellos con un '-' en frente tienen un commit equivalente en master.
Para SOLO los commits que no están en master, combine cherry pick con grep:
git cherry -v master | grep "^\+"
Salida de ejemplo:
+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message