2015-08-20 2 views
5

Кто-то в моей команде нажал ненужный тег на удаленный, и я удалил его в своей локальной рабочей копии, а затем нажал на удаленный, тег исчез.Git: как вы знаете, кто нажал тег?

Но до того, как я удалил этот тег, многие люди уже поместили этот тег в свою локальную рабочую копию, каждый, кто толкает его снова (выбрав «push all tags» в SourceTree), воссоздает эти теги.

С помощью git show <tagname> я могу только увидеть, кто создает тег в первый раз, но как я могу найти, кто снова нажал тег?

+3

Git сам не хранит эту информацию, но некоторые услуги хостинга (такие как GitHub). – Jubobs

+1

Возможно, вы сможете настроить крючок на стороне сервера, чтобы удалить его при нажатии, но опять же, его нужно каждый раз отталкивать от каждого, пока они не очистят его из локальных репозиториев. OTOH, вы можете использовать это, чтобы выяснить, кто его нажимает, и отправить им предупреждение, чтобы удалить его локально. – DavidN

+0

Ссылка: http://stackoverflow.com/questions/5809910/how-do-i-react-to-new-tags-in-git-hooks –

ответ

1

Даже если у вас есть аннотированные теги, где теггер сохраняется в объекте тега, вы все равно не можете видеть, кто его нажал, если вы не сохранили его на сервере во время его нажатия. Издания GitHub/GitLab Enterprise могут предоставить вам это.

Однако ваша корневая проблема заключается в том, что каждый должен удалить этот тег на своих локальных компьютерах, чтобы он не был отброшен.

Если люди не имеют локальные только тегов, они могут выполнить следующую команду, чтобы удалить все локальные тег, которые не встречаются в удаленном хранилище:

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

Я надеюсь, что помогает!

Смежные вопросы