Ich weiß, diese Frage wurde bereits in ähnlicher Weise angesprochen. Ich suche jedoch ein strengeres Auswahlkriterium, nämlich Ich bin daran interessiert sind nur in den Zweigen derGit: Finden Sie alle Remote-Niederlassungen in Frage * zum Löschen (* letzten Commit ist eine Zusammenführung zu meistern)
- wurden
- habe keine weiteren Commits nach der Zusammenführung zu meistern
Dies ist zu vermeiden, zu löschen Zweige zu meistern verschmolzen, die etwas weiter haben (evtl. wertvolle) Arbeit, die aber nicht zum Master zusammengeführt wurden (durch mögliche Weglassung, abgebrochene Pull-Anfrage etc.)
Sie müssen sich nicht um Root-Commits kümmern ('--max-elterns = 0'), nur über jeden tipmost-Commit. Jede Zusammenführung bewirkt, dass alle eingefügten Commits von diesem Pfad aus erreichbar sind und alle Vorgänger per Definition von ihren Nachfolgern aus erreichbar sind. Das '-merged'-Prädikat von 'git branch' (jetzt auch in' git for-each-ref' verfügbar) handhabt das für dich, also bringt 'git branch -r --merged master' dir deine Liste. – torek
Aber ist es nicht wahr, dass 'git branch -r --merged master' nicht zwischen Zweigen unterscheidet, die nach der letzten Zusammenführung weitere Commits haben, und diejenigen, die dies nicht tun? Das ist das Problem, an dem ich interessiert bin. – diarmuid
Nein, es ist nicht wahr: "--merged" bedeutet "testet das Tip Commit von' $ theirs' gegen das Tip Commit von '$ our', mit der offensichtlichen Bedeutung für' $ ours' und '$ theirs', und Der Test besteht aus "is ancestor" (der gleiche Test wird mit "git merge-base --is-ancestor" durchgeführt.) Nehmen wir an, dass "origin/good" auf "X" und "origin/bad" verweist zeigt auf 'Y', wobei' X' entweder hinter der Spitze von 'Master' steht oder die Spitze von' Master' ist, aber 'Y' nicht von (der Spitze von)' Master' aus erreichbar ist. is-ancestor-Test besteht für 'X' (' X' * ist * ein Vorfahre der Spitze von 'master'), aber scheitert für' Y'. – torek