Supposons que j'ai créé une nouvelle branche my_experiment
à partir de master
et que j'ai effectué plusieurs commits sur my_experiment
. Si je fais un git log
sur my_experiment
, je vois les commits effectués sur cette branche, mais également ceux effectués sur master
avant la création de la branche my_experiments
.
Il me serait très utile de voir l'historique de tous les commits dans la branche my_experiments
jusqu'à la création de cette branche - une véritable histoire de cette branche. Autrement, lorsque je regarde dans le journal, il n’est pas clair si les commits étaient sur la branche my_experiments
ou non.
Y a-t-il un moyen de faire cela avec Git?
Vous pouvez utiliser une plage pour le faire.
git log master..
Si vous avez vérifié votre branche my_experiment
. Ceci comparera où master
est à HEAD
(la pointe de my_experiment
).
La commande git merge-base
peut être utilisée pour trouver un ancêtre commun. Ainsi, si mon_expérience n’a pas encore été fusionnée dans le maître et que mon_expérience a été créée à partir du maître, vous pouvez:
git log --oneline `git merge-base my_experiment master`..my_experiment
Remarque: si vous limitez ce journal au n dernier commit (les trois derniers, par exemple, git log -3), veillez à laisser un espace entre 'n' et votre branche:
git log -3 master..
Avant Git 2.1 (août 2014), cette erreur: git log -3master..
vous montrerait en réalité les 3 derniers commits de la branche courante (ici my_experiment
), en ignorant la limite master
(signifiant si my_experiment
contient seulement un commit, 3 seraient toujours listés, 2 d'entre eux de master
)
Voir commit e3fa568 par Junio C Hamano (gitster
) :
git log -<count>
" plus attentivementCette ligne de commande mal orthographiée ignore simplement "
master
" et finit par afficher deux validations à partir duHEAD
actuel:
$ git log -2master
parce que nous alimentons "
2master
" enatoi()
sans nous assurer que la chaîne entière est analysée comme un entier.Utilisez plutôt la fonction d'assistance
strtol_i()
.
Je pense qu'une option pour vos besoins est git log --oneline --decorate
. Cela vous permet de connaître la validation cochée et les principaux validations pour chaque branche que vous avez dans votre récit. En faisant cela, vous avez une vue agréable de la structure de votre repo et des commits associés à une branche spécifique. Je pense que lire this pourrait aider.
Vous ne pouvez utiliser que git log --oneline
Je sais que c'est très tard pour celui-ci ... Mais voici un oneliner (pas si simple) pour obtenir ce que vous cherchiez:
git show-branch --all 2>/dev/null | grep -E "\[$(git branch | grep -E '^\*' | awk '{ printf $2 }')" | tail -n+2 | sed -E "s/^[^\[]*?\[/[/"
git show-branch
(envoi des avertissements à /dev/null
).grep -E "\[$BRANCH_NAME"
.$BRANCH_NAME
réel est obtenu avec git branch | grep -E '^\*' | awk '{ printf $2 }'
(la branche avec une étoile, répercutée sans cette étoile).tail -n+2
.[$BRANCH_NAME]
avec sed -E "s/^[^\[]*?\[/[/"
.