Andere Antworten sahen unvollständig aus.
Ich habe es unten vollständig versucht, und es hat gut funktioniert.
HINWEIS:
1. Legen Sie eine Kopie Ihres Repositorys an, bevor Sie den folgenden Versuch unternehmen, um auf Nummer sicher zu gehen.
Einzelheiten:
1. Die gesamte Entwicklung erfolgt im dev-Zweig
2. Der Qa-Zweig ist nur eine Kopie von Dev.
3. Von Zeit zu Zeit muss der Entwicklungscode in den QA-Zweig verschoben/überschrieben werden.
Wir müssen also den Qa-Zweig vom Dev-Zweig überschreiben.
Teil 1:
Mit den nachstehenden Befehlen wurde die alte QA auf die neuere Dev aktualisiert:
git checkout dev
git merge -s ours qa
git checkout qa
git merge dev
git push
Automatischer Kommentar für letzten Push gibt unten:
// Output:
// *<MYNAME> Merge branch 'qa' into dev,*
Dieser Kommentar sieht umgekehrt aus, weil die obige Sequenz auch umgekehrt aussieht
Teil 2:
Nachfolgend sind unerwartete, neue lokale Commits in dev, die unnötig sind
so müssen wir wegwerfen, und machen dev unberührt.
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
Teil 3:
Überprüfen Sie, ob alles wie erwartet funktioniert:
git status
// Output:
// *On branch dev
// Your branch is up-to-date with 'origin/dev'.
// nothing to commit, working tree clean*
Das ist alles.
1. die alte QA wird nun durch den neuen Code der Entwicklungsabteilung überschrieben
2. das lokale System ist sauber (der entfernte Ursprung/das entfernte Gerät wird nicht berührt)