2010-07-28 7 views
2

Je cherche un moyen de voir la date à laquelle un commit a été poussé vers un dépôt distant. En utilisant git log, vous pouvez voir à la fois la date de l'auteur et la date de validation; Toutefois, aucune de ces deux dates ne vous indique quand le développeur a réellement réussi à pousser la modification vers le référentiel distant principal. Au début, je pensais que ce que je cherchais n'était tout simplement pas disponible dans git, mais hier j'ai découvert que spécifier une plage de dates dans la commande log filtrait réellement les commits le jour où ils étaient poussés vers le repo distant principal. Voici un exemple:exposer la date à laquelle un commit a été poussé vers un dépôt

  1. Disons que je l'auteur et engagé un patch à ma branche master locale le 1er Juillet 2010. Mais il est Juillet 28 et je reçois enfin le temps de faire un coup de pouce à la maître à distance repo.

  2. Ensuite, je fais un 'Fetch' pour m'assurer que mon origine/maître local est à jour avec le repo maître distant.

  3. je regarde le journal pour origin/master en exécutant:

    git log --format="format:%H %nAuthor Date: %ad %nCommit Date: %cd %n" origin/master 
    

    Les résultats des journaux montrent que cela a été écrit et engagé le 1er Juillet 2010, même si elle était juste poussé à la prise en pension à distance .

  4. Je spécifier une plage de dates (since..until)

    git log --format="format:%H %nAuthor Date: %ad %nCommit Date: %cd %n" origin/[email protected]{"1 hour ago"}..origin/master 
    

    et à mon grand étonnement git sait que cela a été poussé au dépôt à distance dans la dernière heure, même si elle a été l'auteur et semaines engagés depuis.

Il semble donc que git conserve la date à laquelle commits sont poussés à une prise en pension, ma question est de savoir s'il y a un moyen d'exposer cette date, je peux voir (par exemple) les cinq poussées les plus récentes à la référentiel distant?

Répondre

2

Malheureusement, la syntaxe @ {"1 hour ago"} vérifie le reflog de la branche en question (dans ce cas, origin/master). Ce reflog est unique à chaque clone et n'est pas poussé, tiré ou cloné. En plus de cela, la valeur par défaut pour core.logAllRefUpdates pour les référentiels nus est false, donc un "serveur" typique n'aura pas les reflogs qui vous fourniront cette information.

Pour clarifier, le « il y a 1 heure » fait référence au moment où vous les cheveux, pas quand quelqu'un poussé

Si core.logAllRefUpdates a été définie sur true dans le repo nu, vous pourriez cd et « git show reflog branche "pour regarder chaque poussée et ce qu'elle contenait

Questions connexes