Imaginez l’histoire suivante :
J’aimerai trouver, commit « c » a été fusionnée à maître (c’est à dire, trouver commit de fusion « h »).
Imaginez l’histoire suivante :
J’aimerai trouver, commit « c » a été fusionnée à maître (c’est à dire, trouver commit de fusion « h »).
Votre exemple montre que la branche feature
est toujours disponible.
Dans ce cas h
est le dernier résultat de:
git log master ^feature --ancestry-path
Si la branche feature
n'est plus disponible, vous pouvez afficher la fusion s'engage dans l'histoire de la ligne entre c
et master
:
git log <SHA-1_for_c>..master --ancestry-path --merges
Ce sera toutefois également afficher toutes les fusions qui s'est passé après h
, et entre e
et g
sur feature
.
En comparant le résultat des commandes suivantes:
git rev-list <SHA-1_for_c>..master --ancestry-path
git rev-list <SHA-1_for_c>..master --first-parent
vous donnera le SHA-1 h
dans la dernière ligne dans la commune.
Si vous avez à disposition, vous pouvez utiliser comm -1 -2
sur ces résultats. Si vous êtes sur msysgit, vous pouvez utiliser les éléments suivants du code perl pour comparer:
perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' file1 file2
(code perl à partir de http://www.cyberciti.biz/faq/command-to-display-lines-common-in-files/ , qui l'a mené de "quelqu'un à la comp.unix.shell groupe de presse").
Voir le processus de substitution si vous souhaitez faire un one-liner.
git-get-fusion va localiser et montrer le commit de fusion que vous recherchez :
La commande suit les enfants la validation donnée jusqu'à une fusion dans une autre branche (sans doute maître) est découvert.
Autrement dit, pour résumer le message de Gauthier :
EDIT : car celui-ci utilise des processus de substitution " «, il n’est pas compatible POSIX, et il peut ne pas fonctionner avec votre shell. Il fonctionne avec
ou `` si.
J’avais besoin de le faire et en quelque sorte trouvé `` (qui fait référence en fait à cette question de SO, mais Michael Haggerty jamais ajouté une référence à son script Python très agréable ici). Alors maintenant que j’ai.
S'appuyant sur l'excellente réponse de Gauthier, nous n'avons pas besoin d'utiliser comm
pour comparer les listes. Puisque nous recherchons le dernier résultat en --ancestry-path
qui est également en --first-parent
, nous pouvons simplement grep pour ce dernier dans la sortie de l'ancien:
git rev-list <SHA>..master --ancestry-path | grep -f <(git rev-list <SHA>..master --first-parent) | tail -1
Ou pour quelque chose de vif et de réutilisable, voici une fonction à afficher dans .bashrc
:
function git-find-merge() {
git rev-list $1..master --ancestry-path | grep -f <(git rev-list $1..master --first-parent) | tail -1
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.