При слиянии моих изменений с ведущим ведущим я часто обнаружил, что делаю следующее:
git checkout somefeature
git checkout -b integration
git rebase master # resolving conflicts along the way
git checkout somefeature
git merge integration # or rebase, doesn't matter in this example
Я часто обнаруживаю, что объединение ветки интеграции обратно в мою ветку свойств не позволяет выполнить некоторые конфликты. Первый вопрос, который у меня есть, заключается в следующем: "Почему это происходит, если моя ветка интеграции является потомком некоторой функциональности, и я уже разрешил конфликты с ведущим мастером?"
Если вам интересно, почему я использую ветвь интеграции для начала, это предотвратит загрязнение моей текущей ветки с помощью слияния с половиной отказа.
Мое текущее обходное решение заключается в следующем:
git checkout integration
git branch -f somefeature # overwrite the branch
Теперь проблема заключается в том, что я не могу вернуть свои изменения обратно в удаленную ветку:
git push origin somefeature
! [rejected] somefeature -> somefeature (non-fast forward)
Итак, теперь мне нужно удалить удаленную ветку и повторно нажать мои изменения. Это не может быть оптимальным способом сделать это, поэтому мне интересно: "Какой лучший способ переписать ветку и нажать изменения в удаленной ветке?"