Git rebase все еще показывает коммит слияния - PullRequest
0 голосов
/ 30 августа 2018

Учитывая те 2 ветви:

master
myfeature

Когда я закончу с myfeature, я перезагружаюсь на master примерно так:

git rebase -i master

Теперь, чтобы объединить его с мастером:

git checkout master
git merge myfeature
git push origin master

Сразу после проверки мастера случается, что некоторые работы были объединены кем-то другим.

Если я потяну до слияния

git checkout master
git pull origin master
git merge myfeature
git push origin master

В журналах постоянно отображаются коммиты слияния.

Нужно ли тянуть мастер до слияния, хотя ветка была перебазирована? Как избавиться от коммитов слияния в этом случае?

Примечание. Git настроен на: pull.rebase=true

Мой полный рабочий процесс:

git pull origin master
git checkout -b myfeature
git add .
git commmit -m "myfeature"
git push origin myfeature
git rebase -i master
git checkout master
git pull origin master # ??
git merge myfeature
git push origin master
git branch -d myfeature
git push origin --delete myfeature

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Исправить проблему слияния

Вы должны потянуть ветку master непосредственно перед выполнением ребазинга.

В противном случае могут быть некоторые изменения, которые не будут учтены в вашем ребазе, и они будут объединены.

Более того, в этом случае ваш ребаз не имеет никакого эффекта, потому что ветвь myfeature уже находится над последними изменениями, которые вы извлекли из источника.

После создания вашей ветки:

git checkout master
git pull origin master
git rebase -i master myfeature
git checkout master
git merge myfeature

Другое замечание

  • Не нажимайте ветку myfeature до перебазирования В противном случае у вас будут разные истории между локальной и удаленной ветвями.

Этот ответ имеет дополнительные указания на этот счет.

0 голосов
/ 30 августа 2018

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

Настоятельно рекомендуется не использовать git rebase, поскольку он перезаписывает историю git. Вы можете прочитать больше о разнице и как ее использовать и почему не использовать git rebase в этой статье

Теперь перейдем к вашей проблеме.

Вы должны выполнить следующие шаги, чтобы объединить вашу работу.

  • Завершите работу над веткой newfeature и выполните коммит
  • Оформить заказ мастеру
  • Выполните git pull мастера и синхронизируйте с удаленным сервером.
  • Теперь выполните git merge на локальном или на удаленном сервере. Если вы используете gitlab, есть интерфейс запроса на слияние, который очень полезен и с ним легко работать.
  • Если вы сделаете это на локальном компьютере, подтвердите изменения и затем нажмите их.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...