Je voudrais exécuter Pour clarifier: J'ai une succursale appelée La situation (simplifiée) ( @ Araqnid's Suggestion ne semble pas fonctionner, à moins que je sois bâclé la lecture: p> car cela donne à tous les engagements dans Git filtre-branche code> sur tous les enfants d'une commit donnée. Cela ne semble pas être une tâche facile, car il ne semble pas y avoir un moyen de dire Git REV-LIST CODE> pour ne pas renverser les enfants d'un commit particulier. L'utilisation de la syntaxe .. Syntaxe ne fonctionnera pas car elle inclura également le parent commettant toute fusion dans cette gamme. Je manque quelque chose ici? Edit h3>
base code> qui a été fusionné dans dérivé code> plusieurs fois . J'aimerais énumérer et éventuellement exécuter filtre-branche code> sur, juste les engagements qui descendent de son plus récent commit. J'aimerais également énumérer des engagements similaires sur d'autres succursales. P> dérivé code> est la branche à gauche): p> dérivé code> Sauf pour les commits dans base code>. Ce genre de sens, puisque tout ce qu'il fait, c'est éliminer les ancêtres de l'Engagement négatif. Ce que je veux dire, c'est juste la première ligne. P> p>
4 Réponses :
Eh bien, "- Les branches" ou "--all" incluront tous les conseils de branche, puis "- Not A" exclura A et toutes ses ancêtres. Toutefois, "- Les branches - non-une" incluront des succursales qui n'incluent pas de, ce que je pense ne sont pas ce dont vous avez besoin.
Il n'y a pas de moyen facile d'obtenir tout ce que vous voulez, bien que vous puissiez y travailler. Cela listera toutes les succursales contenant commettre a: p> alors vous devez répertorier toutes les révisions accessibles à l'une de ces personnes, mais pas une révision et toutes les révisions " > git rev-list $(git for-each-ref refs/heads/* | while read rev type name; do
git rev-list $rev | grep $(git rev-parse A) >/dev/null && echo $rev
done) --not A
Je pensais que ce serait quelque chose comme ça. Il semble étrange qu'il n'existe pas de manière plus simple de le faire. Je suppose que c'est parce que GIT Les commettes sont toujours liées à leurs parents et non à leurs enfants. Je vais lui donner un tour et vous faire savoir comment ça se passe.
hmm .. ne semble pas fonctionner. J'ai une succursale CODE> BASE CODE> (p. Ex. Développement) qui a été fusionnée plusieurs fois dans la succursale code> dérivée code> (par exemple, test) (ES). Je veux énumérer simplement les engagements qui sont des descendants de la base la plus récente code> commit. Toutefois Dérivé de liste Git Rev-List --Not Base --Oneeline Code> montre que cette liste inclut dérivé code> commits comportant une ascendance commune avec la tête code> la tête code> . C'est-à-dire tout ce qui a une fusion de la base en tant qu'entour. Je vais mettre à jour ma question pour clarifier cela.
GIT FOR-CHAQUE REF REFS / TÊTE / \ * CODE> N'inclut pas les noms de branche avec SLAASHES / CODE>
Cela semble le faire:
$ for rev in $(git rev-list --branches); do
git rev-list $rev \
| grep $(git rev-parse base) &>/dev/null \
&& echo $rev;
done \
| xargs -L 1 git rev-list -n 1 --oneline
f16fd151b374b2aeec8b9247489c518a6347d001 merged in the latest from the base branch
564d795afb63eab4ffe758dbcd726ca8b790f9f6 spelling correction
Affiche les sentiers d'ascendance pour commettre Affiche tous les engagements inaccessibles dans le repo: P> A code> à partir d'un ensemble d'autres:
Git journal code> < / a> - ancestry-path code> ^ a code> autres code> em> p>
BlockQuote>
J'ai fait une version alternative. Je ne sais pas si c'est mieux ou pire.
$ getGitChildren 2e9df93 f210105376 feat(something): did that feature 9a1632ca04 fix(dummy): fix something