Otras respuestas parecían incompletas.
He intentado a continuación en su totalidad, y funcionó bien.
NOTA:
1. Haga una copia de su repositorio antes de intentar a continuación, para estar seguro.
Detalles:
1. Todo el desarrollo ocurre en la rama de desarrollo
2. La rama de qa es la misma copia del desarrollo
3. De vez en cuando, el código de desarrollo debe moverse / sobrescribirse a la rama de qa
entonces necesitamos sobrescribir una rama qa, desde la rama dev
Parte 1:
con los siguientes comandos, el antiguo qa se ha actualizado a un nuevo desarrollador:
git checkout dev
git merge -s ours qa
git checkout qa
git merge dev
git push
El comentario automático para el último empuje da a continuación:
// Output:
// *<MYNAME> Merge branch 'qa' into dev,*
Este comentario parece inverso, porque la secuencia anterior también parece inversa
Parte 2:
A continuación se muestran nuevos compromisos locales inesperados en desarrollo, los innecesarios,
por lo que debemos descartarlos y hacer que los desarrolladores no se vean afectados.
git checkout dev
// Output:
// Switched to branch 'dev'
// Your branch is ahead of 'origin/dev' by 15 commits.
// (use "git push" to publish your local commits)
git reset --hard origin/dev
// Now we threw away the unexpected commits
Parte 3:
Verifique que todo esté como se esperaba:
git status
// Output:
// *On branch dev
// Your branch is up-to-date with 'origin/dev'.
// nothing to commit, working tree clean*
Eso es todo.
1. el qa antiguo ahora se sobrescribe con el nuevo código de sucursal del desarrollador
2. local está limpio (el origen / dev remoto no se ha modificado)