Altre risposte sembravano incomplete.
Ho provato di seguito per intero, e ha funzionato bene.
NOTA:
1. Creare una copia del repository prima di provare di seguito, per essere al sicuro.
Dettagli:
1. Tutto lo sviluppo avviene nel ramo dev
2. Il ramo qa è solo la stessa copia di dev
3. Di volta in volta, il codice dev deve essere spostato / sovrascritto nel ramo qa
quindi dobbiamo sovrascrivere il ramo qa, dal ramo dev
Parte 1:
Con i comandi seguenti, il vecchio qa è stato aggiornato al nuovo sviluppatore:
git checkout dev
git merge -s ours qa
git checkout qa
git merge dev
git push
Di seguito il commento automatico per l'ultima push:
// Output:
// *<MYNAME> Merge branch 'qa' into dev,*
Questo commento sembra al contrario, perché anche la sequenza sopra sembra al contrario
Parte 2:
Di seguito sono inaspettati, nuovi impegni locali in sviluppo, quelli inutili,
quindi, dobbiamo buttare via e rendere il dev non toccato.
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:
verifica che tutto sia come previsto:
git status
// Output:
// *On branch dev
// Your branch is up-to-date with 'origin/dev'.
// nothing to commit, working tree clean*
È tutto.
1. il vecchio qa è ora sovrascritto dal nuovo codice di filiale dev
2. local è pulito (origine / dev remota non è toccata)