Git обновлений отклонено из-за того, что ветка не работает, несмотря на то, что она была выполнена после клонирования? - PullRequest
0 голосов
/ 07 мая 2020

Сообщение об ошибке:

hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Допустим, у меня есть рабочая ветка и основная ветка

Я только что клонировал репозиторий из gitlab, и все, что я хочу сделать, это просто

git push origin work:master

в pu sh все содержимое мастера

как мне решить эту проблему?

Я пробовал делать git pull, но ничего не делает, и я не может выполнить -f push, так как главная ветвь защищена.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Попробуйте выполнить следующую команду по порядку:

git fetch origin master
git rebase origin/master
git push origin master

Надеюсь, вы не получите никаких конфликтов во время перебазирования, иначе их придется разрешить вручную

0 голосов
/ 07 мая 2020

git push origin work:master означает вызвать другого Git по адресу origin, предложить им любые коммиты, которые у меня есть на моем work, которых у них нет, а затем попросить их установить для master значение match my work. Это не так, но это немного необычно: обычно мы просим их Git установить их $ name (для любого $ name) в соответствии с нашим $ name. В этом случае мы обычно просим их установить свое work, а не свое master.

Если вы просто клонировали их, как вы установили свое имя work? Предположительно их Git рекомендовал вашему Git создать ветку с именем master, а не с именем work. Если вы впоследствии запустили git checkout work, а ваш Git создал свой work на основе вашего origin/work, который был копией их work, это может означать, что их work находится за их master.

(Возможно, что Git на origin настроен так, чтобы рекомендовать вашему Git создать ветку с именем work на основе их work, и в этом случае ваш Git будет сделали это.)


В любом случае это означает, что фиксация чаевых для work находится на позади (но, возможно, также впереди) фиксации чаевых для их master. Если вы заставите их установить master в соответствии с вашим work, они «потеряют» некоторые коммиты в конце своей ветки master. Обычно это плохо, поэтому по умолчанию он отклоняется.

Если это хорошо для вас сегодня, вы можете повернуть свой вежливый запрос Если все в порядке, установите От master до _____ (заполните поле с ha sh ID от вашего имени work) в принудительную команду: Установите master на _____! (введите пустым так же). Если у вас есть разрешение, они будут подчиняться команде и, таким образом, потерять те коммиты, которые у них были, которые были «впереди» вашего work.

Если вы не хотите удалить коммиты из их master, выясните порядок коммитов, которые вы хотели бы иметь, и используйте git rebase или git merge, чтобы скопировать или объединить любые work коммиты, которых у вас нет, в порядок это не заставит их потерять свои коммиты.

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