git tagging - использовать локальный тег также для удаленного? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь разобраться в тегах git.Насколько понимаю, тегирование служит для обозначения определенных точек в процессе разработки.

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

Допустим, я отправляю свою версию и отмечаю ее как

git tag v0.0.1 master

локально.

Теперь я собираюсь отправить свой локальный коммит в удаленное хранилище.И поскольку у меня может быть просто плохой день, я испортил свой удаленный тег с опечаткой вроде

git push origin master v0x.0.3

Несколько коммитов позжеЯ больше не могу найти свой удаленный коммит v0.0.1 из-за опечатки.

Я никак не могу сказать git использовать тег, который я использую локально, также в удаленном репо?

1 Ответ

0 голосов
/ 01 марта 2019

Звучит так, как будто вы говорите, что когда вы делаете этот толчок, вы думаете, что он собирается создать новый удаленный тег на master с именем, отличным от вашего локального тега.Это не правильно.

Если существует ссылка с именем v0x.0.3, она будет выдвинута как есть ( не обязательно указывает на master).Если это не так - что, скорее всего, в случае случайной аппликатуры, как предложено в приведенных вами примерах команд, - это приведет к ошибке команды push с сообщением о том, что она не знает, что v0x.0.3 is.

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

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

git push origin local_tag_name:remote_tag_name

(потому что local_tag_name - это тег, поэтому git сделает вывод, что вы хотите, чтобы remote_tag_name также был тегом, но у вас естьстараться изо всех сил изменить имя);или

git push origin master:refs/tags/remote_tag_name

(где вы явно говорите, что хотите создать новый тег на пульте).

И - это случаев использования, когда вы можете захотетьсделай это.Практически во всех ситуациях git предоставляет гибкость, позволяющую делать все, что вы хотите, а затем предоставляет команды eas (ier) для использования, чтобы делать то, что большинство людей хочет большую часть времени.Таким образом, ваше наблюдение, что вы можете создавать различные имена тегов на пульте, является правильным;но это не означает, что вы должны, или должны, или будете случайно обмануты.

Чтобы согласовать это с концепциями git: Хотя вы, похоже, думаете о теге как о атрибутекоммит, это не так.Это его собственная вещь (что относится к коммиту [1]);и эта вещь может или не может существовать в любом данном репо.Если он существует локально, вы можете (но не обязаны) передать его на пульт;и если он существует на удаленном компьютере, вы можете (но не обязаны) извлекать его на локальный компьютер.


[1] На самом деле тег ссылается на некоторый объект , который обычно является коммитом, но может быть чем-то другим, например, конкретным файлом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...