Git нажатие на удаленную ветку
Люди,
Я клонировал репо. Я создал ветку из нее для работы над функцией, выпустив следующую команду:
git branch fix78
то я работал над этой ветвью на
git checkout fix78
Я продолжал совершать фиксации этой локальной ветки. Теперь я хотел нажать это на репо, и поэтому я выпустил следующую команду:
git push origin master:fix78
Я просмотрел репо из веб-браузера и увидел, что на репо была создана новая ветвь с именем fix78. Но у меня не было никаких моих обязательств, которые я сделал.
Что я здесь делаю неправильно? Это то, чего я пытаюсь достичь:
Существует репо (master (trunk в SVN lingo)), теперь, когда я работаю над функцией, я хочу создать локальную ветвь, а затем я также хочу проверить эту ветвь на репо (так что другие члены команды могут видеть, над чем я работаю), тогда я хочу, чтобы мой локальный филиал синхронизировался с этой удаленной ветвью, которую я создаю.
Любая помощь/обратная связь будет абсолютно потрясающей.
Спасибо.
Ответы
Ответ 1
git push origin master:fix78
подталкивает локальный мастер к удаленной ветки с именем fix78. Вы хотели нажать локальную ветвь fix78, которая имеет тот же синтаксис, но без master:
Вы можете исправить это, выполнив git push origin :fix78
, чтобы удалить удаленную ветку, а затем git push origin fix78
, чтобы перенаправить локальную ветвь на удаленное репо.
Ответ 2
Команда push имеет форму
git push remote_name source_ref:destination_ref
Все, что вам нужно сделать, чтобы исправить вашу ошибку, -
git push origin +fix78:fix78
Плюс указывает на то, что вы не заботитесь о том, что ветвь потенциально проигрывает историю, поскольку предыдущее нажатие было ошибкой.
Альтернативный синтаксис
git push -f origin fix78
если вы опускаете пункт назначения, это подразумевает, что это одно и то же имя. Если отслеживание настроено на конкретную ветку на пульте дистанционного управления, оно перейдет к этому. Удаление ветвей имеет 2 синтаксиса, старое:
git push -f origin :fix78
и
git push --delete origin fix78
Первый читается как "нажимать ничего в fix78", который удаляет его.
Один трюк заключается в том, что если вы укажете .
как удаленное имя, это подразумевает текущее репо в качестве пульта. Это полезно для обновления локальной ветки без необходимости ее проверки:
git push . origin/master:master
будет обновлять мастер без наличия контрольного мастера.
Надеюсь, что это поможет