Wir verwenden Git und haben eine Hauptniederlassung und Entwicklerzweige. Ich muss eine neue Funktion hinzufügen und dann die Commits für den Master neu festlegen und dann den Master an den CI-Server senden.
Das Problem ist, dass ich bei Konflikten während der Rebase nach Abschluss der Rebase nicht zu meinem Remote-Entwicklerzweig (auf Github) pushen kann, bis ich meinen Remote-Zweig ziehe. Dies führt zu doppelten Commits. Wenn keine Konflikte vorliegen, funktioniert dies wie erwartet.
Frage: Wie synchronisiere ich nach Rebase und Konfliktlösung meine lokalen und Remote-Entwicklerzweige, ohne doppelte Commits zu erstellen?
Konfiguration:
// 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
BEARBEITEN
Es hört sich also so an, als würde dies den Workflow unterbrechen:
Entwickler1, der an myNewFeature arbeitet Entwickler2, der an hisNewFeature arbeitet, verwendet beide den Master als Hauptzweig
developer2 führt myNewFeature in hisNewFeature ein
developer1 wird neu gestartet, Konflikte werden gelöst und anschließend Push-Vorgänge für myNewFeature in den Remote-Zweig erzwungen
Ein paar Tage später führt Entwickler2 myNewFeature wieder in hisNewFeature ein
Wird dies dazu führen, dass die anderen Entwickler Entwickler hassen1?
force
der Push)
rewriting history
, das ist einrebase
we
? Bist du in einem Team von mehr als nur dir?they
Sagen Sie (die Leute, die mehr wissen als ich), dass Sie Ihren Code nicht verwenden sollten, wenn Sie ihn teilenrebase
. Warum machst du nicht einfachgit pull
undgit merge
?