Usamos git y tenemos una rama maestra y ramas de desarrollo. Necesito agregar una nueva característica y luego volver a crear los commits en master, luego empujar master al servidor CI.
El problema es que si tengo conflictos durante el rebase no puedo pasar a mi rama de desarrollador remoto (en Github) después de que se complete el rebase, hasta que retire mi rama remota. Esto provoca confirmaciones duplicadas. Cuando no hay conflictos, funciona como se esperaba.
pregunta: después de la resolución de conflictos y rebase, ¿cómo sincronizo mis ramas de desarrollador local y remoto sin crear confirmaciones duplicadas?
Preparar:
// 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 esto interrumpirá el flujo de trabajo:
developer1 trabajando en myNewFeature developer2 trabajando en hisNewFeature ambos usan master como rama principal
developer2 combina myNewFeature en hisNewFeature
developer1 vuelve a redactar, resuelve conflictos y luego fuerza los empujes a la rama remota para myNewFeature
un par de días después, developer2, fusiona myNewFeature en suNewFeature nuevamente
¿Esto hará que los otros desarrolladores odien el desarrollador1?
force
el empuje)
rewriting history
, eso es unrebase
we
? ¿Estás en un equipo de más que solo tú?they
diga (las personas que saben más que yo) que si comparte su código, entonces no debería estar usandorebase
. ¿Por qué no estás haciendogit pull
ygit merge
?