Кажется, что ваш GitLab настроен так, чтобы не позволять ветвям функций с коммитами слияния сливаться в ветку master
. Здесь вы ошиблись:
После этого я зафиксировал свои локальные изменения и перенес изменения в newbranch в локальную ветку.
То, что вы должны были сделать, это зафиксировать свою работу, а затем извлечь через rebase из удаленной ветви newbranch
. Чтобы исправить ситуацию, я предлагаю обнулить коммит слияния, который произошел, когда вы вытаскивали из GitLab. Вероятно, произошла фиксация слияния, поскольку git pull
по умолчанию использует стратегию слияния, а не стратегию ребазирования. Проверьте git log
, и посмотрите, сколько коммитов было введено из-за неправильной тяги. Предполагая, что был только один коммит слияния, тогда должно сделать следующее:
git reset --hard HEAD~1
Проверьте еще раз, что git log
выглядит правильно. Теперь вы должны увидеть только ваш последний коммит в верхней части ветки. Предполагая, что вы видите это, вы можете сделать это через rebase:
git pull --rebase origin newbranch
Это принесет коммит вашего коллеги, а затем воспроизведет ваш последний коммит в верхней части ветки. Наконец, вы можете вытолкнуть ветку, и проблема должна быть решена:
git push origin newbranch
Обратите внимание, что делать полный сброс, как я уже говорил выше, обычно не очень хорошая вещь. Но в вашем случае никто еще не видел этот коммит слияния, потому что GitLab отклонил вашу попытку подтолкнуть. Так что вы должны быть в безопасности при его удалении.