2015-08-20 4 views
5

Jemand in meinem Team schob einen unbrauchbaren Tag auf Remote, und ich löschte es in meiner lokalen Arbeitskopie und schob es dann auf Remote, verschwand das Tag.Git: Woher weißt du, wer ein Tag schob?

Aber bevor ich dieses Tag löschte, hatten viele Leute dieses Tag bereits in ihre lokale Arbeitskopie gezogen, jeder, der erneut drückt (indem er in SourceTree auf "alle Tags pushen" drückt), erstellt diese Tags neu.

Durch die Verwendung von git show <tagname> kann ich nur sehen, wer das Tag das erste Mal erstellen, aber wie kann ich finden, wer das Tag erneut schob?

+3

Git selbst speichert diese Informationen nicht, aber einige Hosting-Dienste (wie GitHub) tun. – Jubobs

+1

Sie können möglicherweise einen Server-Hook einrichten, um ihn beim Drücken zu löschen, aber dann wird er jedes Mal wieder von jedem gedrängt, bis er ihn aus seinen lokalen Repos entfernt. OTOH, du könntest das verwenden, um herauszufinden, wer es drückt, und ihnen eine Warnung schicken, es lokal zu löschen. – DavidN

+0

Ref: http://stackoverflow.com/questions/5809910/how-do-i-react-to-new-tags-in-git-hooks –

Antwort

1

Auch wenn Sie Tags mit Tags versehen haben, in denen der Tagger im Tag-Objekt gespeichert ist, können Sie immer noch nicht sehen, wer sie verschoben hat, es sei denn, Sie speichern sie zum Zeitpunkt des Push-Vorgangs auf dem Server. GitHub/GitLab Enterprise Editionen können dies für Sie bereitstellen.

Ihr Hauptproblem besteht jedoch darin, dass jeder Benutzer dieses Tag auf seinen lokalen Computern löschen muss, damit es nicht wieder hochgeschoben wird.

Wenn die Menschen local-only-Tags nicht haben können sie die folgenden löschen alle lokalen Tags ausgeführt, die in der Remote-Repository zu finden sind:

# Delete all local tags 
git tag -l | xargs git tag -d 
# Fetch remote tags 
git fetch -t 

Ich hoffe, das hilft!

Verwandte Themen