Подтвердить что ты не робот

Почему git нажатие на две ветки в этом git нажатии?

Что может вызвать "git push", чтобы попытаться передать две ветки? У меня есть свой филиал, над которым я работаю, что находится на общем репо... и ведущей ветке. Прямо сейчас я просто хотел подтолкнуть к своей личной ветке, которая прошла очень хорошо, но она также пыталась подтолкнуть хозяина и была отвергнута. Посмотрел что-то вроде этого:

foo$ git push
Counting objects: 38, done.
Delta compression using 2 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (21/21), 9.73 KiB, done.
Total 21 (delta 14), reused 0 (delta 0)
To ssh://example.com/project.git
   8184634..86b621e  mybranch -> mybranch
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'ssh://example.com/project.git'  

Мой конфиг выглядит следующим образом:

remote.origin.url=ssh://example.com/project.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.mybranch.remote=origin
branch.mybranch.merge=refs/heads/mybranch  

Esko отмечает, что он нажимает на оба, потому что они находятся в моей конфигурации. Что, если я хочу подтолкнуть к обоим, просто не одновременно? Когда у меня проверяется mybranch, а я git push, я, очевидно, хочу подтолкнуть mybranch, а не master. Там времена, когда я проведу мастер, отредактирую код, и хочу также совершить/нажать. Есть ли способ совместного сосуществования?

4b9b3361

Ответ 1

При использовании git push без каких-либо аргументов он вытолкнет все локальные ветки с соответствующей удаленной ветвью с тем же именем. Поскольку ваш локальный репозиторий имеет ветки master и mybranch, а также удаленный репозиторий имеет ветки master и mybranch, то Git будет выталкивать их обоих.

Если вы хотите нажимать только одну ветвь, вы можете явно указать Git, какую ветвь вы хотите нажать: git push origin mybranch

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

Ответ 2

Если вы хотите нажимать только текущую ветвь, вы можете использовать "git push origin HEAD" или, возможно, даже "git нажать HEAD" (с помощью современных git).

Поведение по умолчанию, если refspec для push (вы определили refspec для извлечения в своей конфигурации, но не для push) - нажать сопоставление. Из git -push (1):

git push [...] [<repository> <refspec> ...]

<refspec> ...

Специальный refspec: (или +: разрешить немедленные обновления)          направляет git, чтобы нажимать "соответствующие" ветки: для каждой ветки, которая          существует на локальной стороне, удаленная сторона обновляется, если ветвь          одно и то же имя уже существует на удаленной стороне. Это значение по умолчанию          режим работы, если не найдено явного refspec (то есть ни на          командной строки и...