Découvrez le créateur de la twig git

Je veux savoir qui a créé une twig.

Je suis en quelque sorte capable de le faire avec:

git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _ 

Cependant, cela retourne le dernier committer par twig, pas nécessairement la personne qui a créé la twig.

Une twig n’est rien d’autre qu’un pointeur de validation. En tant que tel, il ne suit pas les métadonnées comme “qui m’a créé”. Voir par vous-même. Essayez le cat .git/refs/heads/ dans votre référentiel.

Ceci écrit, si vous voulez vraiment suivre ces informations dans votre référentiel, consultez les descriptions des twigs. Ils vous permettent d’attacher des métadonnées arbitraires aux twigs, au moins localement.

La réponse de DarVar ci – dessous est également une manière très intelligente d’obtenir ces informations.

List Remote Git Branches Par auteur sortingé par committerdate:

 git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n 

J’ai modifié les réponses ci-dessus en utilisant le drapeau –sort et en ajoutant un peu de couleur / formatage.

 git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:ssortingp=3)' --sort=authordate refs/remotes 

Ajout à https://stackoverflow.com/a/19135644/2917986

 git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | awk '{print $7 $8}' 

PS Nous avons utilisé awk pour imprimer l’auteur et la twig distante

 git for-each-ref --format='%(authorname) %09 -%(refname)' | sort 

Vous pouvez savoir qui a créé une twig dans votre référentiel local en

 git reflog --format=full 

Exemple de sortie:

 commit e1dd940 Reflog: HEAD@{0} (a ) Reflog message: checkout: moving from master to b2 Author: b  Commit: b  (...) 

Mais cela est probablement inutile, car vous ne créez généralement que des twigs sur votre repository local.

Les informations sont stockées dans ./.git/logs/refs/heads/ branch . Exemple de contenu:

 0000000000000000000000000000000000000000 e1dd9409c4ba60c28ad9e7e8a4b4c5ed783ba69b a  1438788420 +0200 branch: Created from HEAD 

Le dernier commit de cet exemple provient de l’utilisateur “b” alors que la twig “b2” a été créée par l’utilisateur “a”. Si vous modifiez votre nom d’utilisateur, vous pouvez vérifier que git reflog prend les informations du journal et n’utilise pas l’utilisateur local.

Je ne connais aucune possibilité de transmettre ces informations de journal locales à un référentiel central.

en supposant:

  1. twig a été faite de master
  2. n’a pas encore été fusionné pour master

  git log --format="%ae %an" master.. | tail -1 

Pour autant que je sache, vous pouvez voir si vous êtes le créateur d’une twig seulement. Ceci est indiqué par la première ligne dans .git / ref / heads / . Si elle se termine par “Créé à partir de HEAD”, vous êtes le créateur.

Je sais que ce n’est pas entièrement la scope de la question, mais si vous trouvez que la nécessité de filtrer uniquement les commits par un auteur spécifique, vous pouvez toujours passer à grep 🙂

 # lists all commits in chronological order that # belong to the github account with # username `MY_GITHUB_USERNAME` (obviously you # would want to replace that with your github username, # or the username you are trying to filter by) git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -committerdate | grep 'MY_GITHUB_USERNAME' 

codage heureux! 🙂