Як позбутися "чи клоббер існуючий тег"


130

Я використовую git у VSCodium, і кожен раз, коли я намагаюся витягнути git скаржиться.

Заглядаючи в журнал, я бачу

> git pull --tags origin master
From https://github.com/MY/REPO
 * branch            master     -> FETCH_HEAD
 ! [rejected]        latest     -> latest  (would clobber existing tag)
   9428765..935da94  master     -> origin/master

Виконання команди за допомогою --forcehelp до наступного разу.

Мені незрозуміло, що тут йде не так. Що сталося і як я можу вирішити цю проблему?

Я маю на увазі: Окрім того, що я розвалив місцеві репо та знову клонував.

Відповіді:


335

Вам слід оновити локальні теги за допомогою віддалених тегів:

git fetch --tags -f

Потім знову потягніть.


14
Це спрацювало для мене. У мене були проблеми з VSCode, тоді запуск цього в командному рядку вирішив проблему. :)
Хуан Луїс Файлон

2
Дякую, чи можете ви пояснити більше про це, будь ласка? Це одноразова команда, в чому саме полягала проблема і як це вирішувало ..
Сагів bg

5
@ Sagivb.g на пульті дистанційного керування, хтось видаляє тег і створює новий з тим самим іменем, тоді це відбудеться у вашому місцевому
Туан Тран

41

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

Вимкніть це налаштування:

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

Тепер все готово.


Детальне пояснення:

Теги - це просто посилання на конкретні коміти (як і назви гілок). Основна відмінність полягає в тому, що git(наскільки мені відомо) припускається, що теги не змінюватимуться там, де очікується оновлення гілок.

Отже, "помилка" полягає в тому, що у вашому локальному тезі є тег, який називається latestвказівкою на фіксацію X - але пульт має тег, який називається latestвказівкою на фіксацію Y. Якщо ви застосуєте зміну з пульта, ви перезапишете свій локальний тег.

VSCode за замовчуванням витягне всі теги, таким чином ви отримаєте помилку.

Немає нічого поганого в тому, що у вас є «рухомий» тег, наприклад latest, це просто не те, що враховує VSCode (особиста думка).


Крім того, ви можете уникнути проблеми за допомогою командного рядка та введення git pullкоманди вручну . Зокрема, вам потрібно пропустити, --tagsщоб пропустити цей етап процесу.

Якщо ви зробите це, ваші теги не будуть оновлюватися - але я не думаю, що це тут проблема.


Дуже дякую. Мені довелося оновити свій VSCodium, але тоді це спрацювало. Думаю, я міг би також позбутися свого місцевого тегу?
Skeeve

1
див. мою відповідь нижче
Туан Тран
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.