Trouver la date et l'heure d'un fichier a été ajouté en premier à un dépôt Git
Est-il un simple Git de commande pour déterminer la "date de création" d'un fichier dans un référentiel, c'est à dire la date à laquelle il a été ajouté en premier?
Il serait mieux si il peut déterminer ce même fichier renomme/déplace. J'aimerais qu'il soit un lisible par ordinateur et une ligne de sortie; il est peut-être que je n'ai pas trouvé le bon git log <fname>
options pour ce faire.
Vous devez vous connecter pour publier un commentaire.
git log --format=%aD <FILE> | tail -1
Avec cette commande vous pouvez sortir tous les jour sur ce dossier et d'en extraire la dernière
--follow
de suivre le journal par le biais de renomme comme l'OP demandé. Aussi une bonne pratique pour ajouter--
avant le nom de fichier juste au cas où il se heurte à une option ou ref nom.git
de Python, j'ai été en espérant pour une commande qui n'a pas besoin de la tuyauterie. Je suppose que je peux obtenir la dernière ligne avec Python, cependant. Toutes les pensées? Merci!subprocess.Popen
etcommunicate()
à lire stdout dans une chaîne. Diviser la chaîne de \n dans une liste, puis obtenir l'élément -1. Découvrez docs.python.org/library/subprocess.html#popen-objectssome_string.split('\n')[-1]
, mais j'ai demandé pour les pensées sur l'obtention de Git pour revenir seule la première entrée du journal.git log --follow --format=%aD --reverse -- <fname> | head -1
(vous n'avez donc pas besoin de lire toutes les lignes en Python, juste le premier)--reverse
/head
donne différentes - et incorrect - les résultats de certains fichiers.tail
fonctionne, tout simplement.%aD
vs%ct
)?--no-pager
options, de sorte que vous pouvez laisser tomber le| tail -1
(ce qui rend également plus facile de travailler avec xargs)La solution native:
Il donne la dernier "date de création" d'un fichier dans un référentiel, et cela indépendamment de fichier renomme/déplace.
-1
est synonyme de--max-count=1
et limite le nombre de commits pour la sortie (pas plus d'un dans notre cas).Cette limite est besoin depuis un fichier peut être ajouté plus d'une fois. Par exemple, il peut être ajouté, supprimé, puis l'ajouter à nouveau. Dans de tels cas
--diff-filter=A
produira plusieurs lignes de ce fichier.Pour obtenir le première date de création de la première ligne, on doit utiliser
--reverse
option, sans limitation, (depuis limite est appliquée avant de commander).%aI
donne la date dans le strict ISO 8601 format (par exemple,2009-06-03T07:08:51-07:00
).Mais cette commande ne fonctionne pas correctement en raison de la bogue connu dans Git (voir "--suit est ignoré lorsqu'il est utilisé avec --reverse" conversation dans git maillist). Donc, nous sommes obligés d'utiliser certains travaux autour pendant un certain temps pour obtenir le première date de création.
-1
faire ici? Un dossier sera ajouté plus d'une fois?-c pager.log=false
:git -c pager.log=false log --diff-filter=A --follow --format=%aD -1 -- <fname>
.--reverse
/head
donne pas de résultats pour certains fichiers. La première commande fonctionne.--no-pager
options, de sorte que vous pouvez laisser tomber le| tail -1
(ce qui rend également plus facile de travailler avec xargs)| tail -1
est nécessaire de prendre la dernière ligne seulement. Rien à voir avec un pager.ls -1 | xargs -n 1 git --no-pager log --diff-filter=A --follow --format=%aI --
. git 2.17.0