382 votes

Comment déterminer quand une branche Git a été créée?

Y a-t-il un moyen de déterminer quand une branche Git a été créé ? J’ai une branche dans mon repo et et je ne me souviens pas de création d’elle et la pensée peut-être Voir l’horodatage de création serait jog ma mémoire.

173voto

Greg Bacon Points 50449

Utilisation

 git show --summary `git merge-base foo master` 

Si vous préférez le voir dans son contexte, alors utilisez

 gitk --all --select-commit = `git merge-base foo master` 

Capture d'écran

163voto

Aaron Points 749

Comme ponted dans les commentaires et dans Jackub de réponse, aussi longtemps que votre branche est plus jeune que le nombre de jours défini dans le paramètre de configuration d' gc.reflogexpire (la valeur par défaut est de 90 jours), vous pouvez utiliser votre reflog pour savoir si une branche de référence a été créé.

Notez que git reflog peut prendre plus git log drapeaux. Notons en outre que l' HEAD@{0} sélecteurs de style sont effectivement les notions de temps et, en fait, sont traitées (dans un piraté sorte de passage) comme date de chaînes. Cela signifie que vous pouvez utiliser l'indicateur --date=local et obtenez un résultat comme ceci:

$ git reflog --date=local
763008c TÊTE de@{Ven Aoû 20 10:09:18 2010}: pull : avance Rapide
f6cec0a TÊTE de@{Mar Août 10 09:37:55 2010}: pull : avance Rapide
e9e70bc TÊTE de@{Jeu 4 Fév 02:51:10 2010}: pull : avance Rapide
836f48c TÊTE de@{Jeu Jan 21 14:08:14 2010}: caisse: déplacement de maître à maître
836f48c TÊTE de@{Jeu Jan 21 14:08:10 2010}: pull : avance Rapide
24bc734 TÊTE de@{Mer Jan 20 12:05:45 2010}: caisse: de la 74fca6a42863ffacaf7ba6f1936a9f228950f657 
74fca6a TÊTE de@{Mer Jan 20 11:55:43 2010}: caisse: de la maîtrise à la v2.6.31
24bc734 TÊTE de@{Mer Jan 20 11:44:42 2010}: pull : avance Rapide
964fe08 TÊTE de@{Lun Oct 26 15:29:29 2009}: caisse: de la 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 
4a6908a TÊTE de@{Lun Oct 26 14:52:12 2009}: caisse: de la maîtrise à la v2.6.28

Il peut également être utile à la fois pour utiliser --date=relative:

$ git reflog --date=relatif
763008c TÊTE de@{il y a 4 semaines}: pull : avance Rapide
f6cec0a TÊTE de@{6 semaines}: pull : avance Rapide
e9e70bc TÊTE de@{il ya 8 mois}: pull : avance Rapide
836f48c TÊTE de@{il ya 8 mois}: caisse: déplacement de maître à maître
836f48c TÊTE de@{il ya 8 mois}: pull : avance Rapide
24bc734 TÊTE de@{il ya 8 mois}: caisse: de la 74fca6a42863ffacaf7ba6f1936a9f228950f657 de maître
74fca6a TÊTE de@{il ya 8 mois}: caisse: de la maîtrise à la v2.6.31
24bc734 TÊTE de@{il ya 8 mois}: pull : avance Rapide
964fe08 TÊTE de@{il y a 11 mois}: caisse: de la 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 de maître
4a6908a TÊTE de@{il y a 11 mois}: caisse: de la maîtrise à la v2.6.28

Une dernière remarque: l' --all drapeau (qui est vraiment un git log drapeau compris par git-reflog) montrera le reflogs pour tous connu des refs en refs/ (au lieu de simplement, HEAD), qui vous montrera la branche des événements clairement:

git reflog --date=local-tous
860e4e4 refs/heads/master@{Sun Sep 19 23:00:30 2010}: s'engager: la Seconde.
17695bc refs/heads/example_branch@{Lun Sep 20 00:31:06 2010}: direction générale: Créé à partir de la TÊTE

71voto

yoyo Points 802

Pro Git § 3.1 Git Ramification - Ce qu'une Branche Est a une bonne explication de ce qu'est une branche git est vraiment

Une branche Git est tout simplement un léger indicateur mobile à [un] commettre.

Depuis une branche est juste un pointeur léger, git n'a pas explicite notion de son histoire ou de la date de création. "Mais attention," je vous entends dire, "bien sûr git sait mon histoire de la branche!" Eh bien, en quelque sorte.

Si vous exécutez l'une des opérations suivantes:

git log <branch> --not master
gitk <branch> --not master

vous verrez à quoi ressemble "l'histoire de votre branche", mais c'est vraiment une liste de commits accessible à partir de "succursale" qui ne sont pas accessibles à partir du maître. Cela vous donne l'information que vous voulez, mais si et seulement si vous n'avez jamais fusionné "succursale" de retour à maîtriser, et n'ont jamais fusionné master en "branche" depuis que vous l'avez créé. Si vous avez fusionné, puis cette histoire de différences vont s'effondrer.

Heureusement, le reflog contient souvent les informations que vous voulez, comme expliqué dans divers autres réponses ici. Utilisez ceci:

git reflog --date=local <branch>

pour afficher l'historique de la branche. La dernière entrée dans cette liste est (probablement) le point sur lequel vous avez créé la direction générale.

Si la direction générale a été supprimée, "succursale" n'est plus valide git identifiant, mais vous pouvez utiliser ce lieu, qui peuvent trouver ce que vous voulez:

git reflog --date=local | grep <branch>

Ou dans une fenêtre cmd shell:

git reflog --date=local | find "<branch>"

Notez que reflog ne fonctionne pas de manière efficace sur les branches distantes, seulement ceux que vous avez travaillé localement.

45voto

Jakub Narębski Points 87537

Tout d'abord, si vous branche a été créée au sein de gc.reflogexpire jours (par défaut 90 jours, soit environ 3 mois), vous pouvez utiliser git log -g <branch> ou git reflog show <branch> trouver la première entrée dans le reflog, qui serait à la création de l'événement, et ressemble à quelque chose comme ci-dessous ( git log -g):

Reflog: <branch>@{<nn>} (C R Eator <creator@example.com>)
Reflog message: branch: Created from <some other branch>

Vous obtenez qui a créé une branche, le nombre d'opérations il y a, et à partir de la branche (eh bien, il pourrait être juste "Créé à partir de la TÊTE", ce qui n'aide pas beaucoup).

C'est ce que MikeSep a dit dans sa réponse.


Deuxièmement, si vous avez de la branche pour plus de gc.reflogexpire et que vous avez exécuté git gc (ou qu'il a été exécuté automatiquement), vous devez trouver ancêtre commun avec la direction générale, il a été créé à partir. Prendre un coup d'oeil au fichier de config, peut-être n'est - branch.<branchname>.merge entrée, qui vous dira que la branche celui-ci est basé sur.

Si vous savez que la branche en question a été créé hors de la branche principale (bifurcation de la branche principale), par exemple, vous pouvez utiliser la commande suivante pour voir ancêtre commun:

git show $(git merge-base <branch> master)

Vous pouvez également essayer d' git show-branch <branch> master, comme une alternative.

C'est ce que gbacon l'a dit dans sa réponse.

20voto

MikeSep Points 3013

Je ne suis pas sûr de la commande git encore, mais je pense que vous pouvez les trouver dans le reflogs.

.git/logs/refs/heads/<yourbranch>

Mes fichiers semblent avoir un timestamp unix.

Mise à jour: Il semble y avoir une option pour utiliser le reflog l'histoire au lieu de la validation de l'histoire lors de l'impression de journaux:

git log -g

Vous pouvez suivre ce journal ainsi, lorsque vous avez créé la direction générale. git log est indiquant la date de la livraison, cependant, pas la date à laquelle vous avez effectué l'action qui a fait une entrée dans le reflog. Je n'ai pas trouvé encore, sauf par la recherche dans le reflog dans le chemin d'accès ci-dessus.

Prograide.com

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.

Powered by:

X