Trouver une branche Git créateur
Je veux savoir qui a créé une branche.
Je suis genre de en mesure de le faire avec:
git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _
Toutefois, cela renvoie le dernier à valider par branche, pas nécessairement la personne qui a créé la direction générale.
- Vous ne pouvez pas obtenir une branche de l'auteur / créateur dans git. Ce que vous faites ici est d'obtenir de l'auteur de la branche du conseil. Il va changer, dès que quelqu'un pousse un nouveau commit là.
- Avertissement : L'hypothèse implicite de cette question/réponse est "dans un flux de travail avec une seule personne par branche". En d'autres flux de travail, où au moins deux des collègues partagent une branche, cette information (direction créateur) n'est pas accessible via git, et les réponses ci-dessus pourrait entraîner quelqu'un dans de fausses hypothèses.
Vous devez vous connecter pour publier un commentaire.
Une branche n'est rien, mais un commit pointeur. En tant que tel, il ne suit pas les métadonnées "qui m'a créé." Voir pour vous-même. Essayez
cat .git/refs/heads/<branch>
dans votre référentiel.Qui écrit, si vous êtes vraiment dans le suivi de ces informations dans votre référentiel, découvrez direction des descriptions. Ils permettent de joindre arbitraire de métadonnées pour les branches, localement au moins.
Aussi DarVar la réponse ci-dessous est un habile moyen d'obtenir cette information.
Liste de Distance Branches Git Par l'Auteur triés par committerdate:
git for-each-ref --format='%(committerdate)%09%(authorname)%09%(refname)' | sort -k5n -k2M -k3n -k4n | grep remotes | awk -F "\t" '{ printf "%-32s %-27s %s\n", $1, $2, $3 }'
(a eu une idée à partir de stackoverflow.com/a/3631819 - peut-être besoin d'ajuster le nombre dans la awk printf selon max datetime/nom de l'auteur longueurs)git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | grep -E {{branch_name}}
git for-each-ref --format='%(committerdate)%09%(authorname)%09%(objectname:short)%09%(refname)' | sort -k5n -k2M -k3n -k4n | grep --color=never remotes | perl -lwpe 's{refs/remotes/origin/}{}' | awk -F "\t" '{ printf "%-32s %-22s %-12s %s\n", $1, $2, $3, $4 }'
j'ai également supprimérefs/remotes/origin
de chaque ligne étant donné que cette partie est toujours la même (dans mon flux de travail de toute façon).--sort
option, de sorte que vous pouvez le faire encore plus courtgit for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' --sort=committerdate
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | grep 'origin/MY_BRANCH_NAME'
J'ai modifié les réponses ci-dessus en utilisant le --une sorte de drapeau et en ajoutant un peu de couleur, de mise en forme.
Ajoutant à https://stackoverflow.com/a/19135644/2917986
P. S. Nous avons utilisé awk assez de pression pour l'auteur & la branche distante
Vous pouvez trouver qui a créé une succursale dans votre local référentiel par
Exemple de sortie:
Mais c'est probablement inutile comme habituellement sur votre dépôt local seulement vous créer des branches.
Les informations sont stockées ./.git/logs/refs/heads/branche.
Exemple de contenu:
Le dernier commit dans cet exemple a été de l'utilisateur "b", tandis que la branche "b2" a été créé par un utilisateur "un". Si vous modifiez votre nom d'utilisateur, vous pouvez vérifier que git reflog prend les informations du journal et de ne pas utiliser la locale de l'utilisateur.
Je ne sais pas à propos de la possibilité de transmettre les locaux du journal d'information à un référentiel central.
en supposant que:
master
master
encoreJe sais que ce n'est pas entièrement la portée de la question, mais si vous trouvez la nécessité de filtrer uniquement s'engage par un auteur en particulier, vous pouvez toujours la pipe à grep 🙂
bon codage! 🙂
Autant que je sache, vous pouvez voir si vous êtes le créateur d'une seule branche. Ceci est indiqué par la première ligne .git/ref/tête/<branch>. Si elle se termine avec "Créé à partir de la TÊTE" vous êtes le créateur.