Git нажатие на удаленную ветку - программирование
Подтвердить что ты не робот

Git нажатие на удаленную ветку

Люди,

Я клонировал репо. Я создал ветку из нее для работы над функцией, выпустив следующую команду:

git branch fix78

то я работал над этой ветвью на

git checkout fix78

Я продолжал совершать фиксации этой локальной ветки. Теперь я хотел нажать это на репо, и поэтому я выпустил следующую команду:

git push origin master:fix78

Я просмотрел репо из веб-браузера и увидел, что на репо была создана новая ветвь с именем fix78. Но у меня не было никаких моих обязательств, которые я сделал.

Что я здесь делаю неправильно? Это то, чего я пытаюсь достичь:

Существует репо (master (trunk в SVN lingo)), теперь, когда я работаю над функцией, я хочу создать локальную ветвь, а затем я также хочу проверить эту ветвь на репо (так что другие члены команды могут видеть, над чем я работаю), тогда я хочу, чтобы мой локальный филиал синхронизировался с этой удаленной ветвью, которую я создаю.

Любая помощь/обратная связь будет абсолютно потрясающей.

Спасибо.

4b9b3361

Ответ 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

будет обновлять мастер без наличия контрольного мастера.

Надеюсь, что это поможет