Usamos o git e temos uma filial principal e uma filial do desenvolvedor. Preciso adicionar um novo recurso e depois refazer as confirmações para mestre, e depois enviar o mestre para o servidor de CI.
O problema é que, se eu tiver conflitos durante a reformulação, não poderei enviar para minha ramificação de desenvolvedor remoto (no Github) após a conclusão da rebase, até puxar minha ramificação remota. Isso causa confirmações duplicadas. Quando não há conflitos, funciona como esperado.
pergunta: após o rebase e a resolução de conflitos, como sincronizar minhas ramificações de desenvolvedor local e remota sem criar confirmações duplicadas
Configuração:
// 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
EDITAR
Parece que isso interromperá o fluxo de trabalho:
developer1 trabalhando em myNewFeature developer2 trabalhando em hisNewFeature ambos usam master como ramificação principal
developer2 funde myNewFeature em hisNewFeature
developer1 rebase, resolve conflitos e força os push para ramificação remota para myNewFeature
alguns dias depois, o developer2 mescla myNewFeature no hisNewFeature novamente
Isso fará com que os outros desenvolvedores detestem o developer1?
force
o push)
rewriting history
, isso é umrebase
we
? você está em uma equipe de mais do que apenas você?they
diga (as pessoas que sabem mais do que eu) que, se você compartilhar seu código, não deverá usá-lorebase
. Por que você não está apenas fazendogit pull
egit merge
?