«Обновления были отклонены, поскольку тег уже существует» при попытке отправить в SourceTree

119

При попытке отправить через исходное дерево появляется следующая ошибка:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master 
Pushing to https://user@github.com/repo.git
To https://user@github.com/repo.git
 = [up to date]      master -> master
...
 ! [rejected]        example_tag -> example_tag (already exists)
updating local tracking ref 'refs/remotes/origin/master'
error: failed to push some refs to 'https://user@github.com/repo.git'
hint: Updates were rejected because the tag already exists in the remote.
Completed with errors, see above

Насколько мне известно, я не вносил никаких изменений в этот тег. Как я могу это исправить?

Senseful
источник

Ответы:

231

Вы также можете решить эту проблему в git bash (нажмите кнопку «Терминал» в пользовательском интерфейсе дерева исходного кода). Тип:

git pull --tags
bytedev
источник
3
Я считаю, что это лучший ответ, потому что это путь наименьшего сопротивления.
Чад
41
В случае конфликта вы можете git pull --tags -fперезаписать тот, который у вас есть локально, если вы этого хотите
DenLilleMand
2
В SourceTree нажмите «Получить все» и включите «выборку всех тегов». Это сделало бы это.
darkgaze 02
118

Если вы не вносили никаких локальных изменений в тег, который хотите сохранить, вы можете удалить тег, который был отклонен, поскольку он уже существует ( example_tagв данном случае):

  1. Щелкните правой кнопкой мыши и выберите тег , чтобы удалить его (обязательно снимите с Удалить тег из всех пультов флажком).
  2. Выберите Fetch вариант (Fetch и хранить все теги локально вовсе не должен быть включен).
  3. Теперь у вас должен быть этот тег, который был только что удален, и при попытке Push больше не будет отображаться это сообщение об ошибке.

Причиной этого является общим в SourceTree происходит потому , Нажмите все теги параметр установлен на по умолчанию. (Другой способ скрыть эту ошибку - снять этот флажок.)

Senseful
источник
«Извлечь и сохранить все теги локально не обязательно» - вот что помогло мне, проверив, что проблема только что повторилась.
Том
Если предположить, что исходный репо является источником истины, это решение является наименее разрушительным и мгновенно устраняет проблему.
Стив Хенти
К сожалению, когда у вас есть 15 отклоненных тегов, шаги 1,2 и 3 могут быть очень утомительными. Да, отключение параметра «Нажать все теги» - это, вероятно, правильный путь.
SagiSergeNadir
27

Снимите флажок push all tagsв нижней части пользовательского интерфейса, когда подтвердите свой git push

JDev-Guns
источник
Вы имели в виду push all tags?
Wodin
Большой! Не наблюдал этого. Спасибо
Meg-90
@Wodin, поэтому, если вы ПРОВЕРИТЕ push all tagsв пользовательском интерфейсе, он попытается перезаписать предыдущие теги. но вы должны ПРОВЕРИТЬ его, чтобы предотвратить перезапись
JDev-Guns
@ JDev-Guns Я просто спрашивал формулировку. Вы изначально сказали push all TABs. Я не знаком с SourceTree, но подозревал, что вы имели в виду TAGsвместо TABs.
Wodin
@Wodin oh gotcha! Я думаю, что сказал, TAGsно если я не сказал , я хотел сказатьTABs
JDev-Guns
15

git pull --tagsработает очень хорошо, но иногда вы можете получить ошибку даже с этой командой. Пример сообщения об ошибке:

 ! [rejected]        example_tag      -> example_tag  (would clobber existing tag)

Это можно решить с помощью команды: git pull --tags -f

Источник:

https://github.com/concourse/git-resource/issues/233

Ogglas
источник
14

Убедитесь, что вы сняли флажок с кнопки «Нажать все теги» при нажатии.

введите описание изображения здесь

Судхир Кумар Палчури
источник
Как упоминалось выше, если вы добавили новый тег локально, не означает ли это, что он не передается на удаленный компьютер?
bytedev
0

Да, действительно, сначала потяните за метки перед собой push --tags. Решил мою проблему.

YoungJeXu
источник
-1

Решаю проблему на SourceTree следующим образом:

  1. Удаление тега с выбором «Удалить тег со всех пультов»
  2. Воссоздание тега
Марко Барберо
источник