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.
Réponses
Trop de publicités?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
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.
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.
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.