Мы используем git, и у нас есть основная ветка и ветки для разработчиков. Мне нужно добавить новую функцию, а затем переустановить коммиты на master, а затем отправить master на сервер CI.
Проблема в том, что если у меня возникают конфликты во время перебазирования, я не могу нажать на свою удаленную ветку разработчика (на Github) после завершения перебазирования, пока я не извлечу свою удаленную ветку. Это вызывает повторяющиеся коммиты. Когда нет конфликтов, работает как положено.
вопрос: после перебазирования и разрешения конфликтов, как мне синхронизировать локальную и удаленную ветки разработчика без создания дублирующих коммитов
Настроить:
// master branch is the main branch
git checkout master
git checkout -b myNewFeature
// I will work on this at work and at home
git push origin myNewFeature
// work work work on myNewFeature
// master branch has been updated and will conflict with myNewFeature
git pull --rebase origin master
// we have conflicts
// solve conflict
git rebase --continue
//repeat until rebase is complete
git push origin myNewFeature
//ERROR
error: failed to push some refs to 'git@github.com:ariklevy/dropLocker.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
// do what git says and pull
git pull origin myNewFeature
git push origin myNewFeature
// Now I have duplicate commits on the remote branch myNewFeature
РЕДАКТИРОВАТЬ
Похоже, это нарушит рабочий процесс:
developer1, работающий над myNewFeature, разработчик2, работающий над hisNewFeature, оба используют master в качестве основной ветви
developer2 объединяет myNewFeature со своимNewFeature
developer1 выполняет перезагрузку, разрешает конфликты, затем принудительно отправляет в удаленную ветку для myNewFeature
пару дней спустя developer2 снова сливает myNewFeature со своимNewFeature
Заставит ли это других разработчиков ненавидеть developer1?
force
толчок)
rewriting history
, что этоrebase
we
? вы в команде больше, чем вы?they
скажите (люди, которые знают больше, чем я), что если вы поделитесь своим кодом, вы не должны его использоватьrebase
. Почему ты просто не делаешьgit pull
иgit merge
?