Я наткнулся на эту довольно непонятную проблему при отправке тегов на пульт, используя две команды git push --tags
и git push --tags origin master
.Они не ведут себя одинаково в следующей ситуации:
Исходная ситуация
Я пытаюсь отправить недавно созданный тег (git tag test
) в удаленное репо, которое на один коммит вперед, потому что кто-тоостальное подтолкнуло к нему коммит и я не потянул последние изменения.В виде рисунка:
Remote [master] (one commit ahead):
A ----- B ----- C ---- D
Local [master] (one commit behind):
A ----- B ----- C
(tag:test)
Проблема
git push --tags
работает, как и ожидалось:
Total 0 (delta 0), reused 0 (delta 0)
To https://remote.gitrepo.com/path/to/project
* [new tag] test14 -> test14
git push --tags origin master
получает отклонение и ошибки:
Total 0 (delta 0), reused 0 (delta 0)
To https://remote.gitrepo.com/path/to/project
* [new tag] test15 -> test15
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://remote.gitrepo.com/path/to/project'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Вопрос
Почему git push --tags origin master
пытается что-то отделить от тега?Я спрашиваю, почему команда пытается передать ветку на удаленный, а не почему она отклоняется