Usiamo git e abbiamo un ramo master e rami sviluppatore. Ho bisogno di aggiungere una nuova funzionalità e quindi reimpostare gli commit su master, quindi spingere master su server CI.
Il problema è che se ho conflitti durante rebase non posso spingere al mio ramo di sviluppatore remoto (su Github) dopo che il rebase è completo, fino a quando non tiro il mio ramo remoto. Ciò provoca commit duplicati. Quando non ci sono conflitti, funziona come previsto.
domanda: dopo il rebase e la risoluzione dei conflitti, come posso sincronizzare i rami degli sviluppatori locali e remoti senza creare commit duplicati
Impostare:
// 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
MODIFICARE
Quindi sembra che questo interromperà il flusso di lavoro:
developer1 lavorando su myNewFeature developer2 lavorando su hisNewFeature utilizza entrambi master come ramo principale
developer2 unisce myNewFeature in hisNewFeature
developer1 ripristina, risolve i conflitti, quindi forza le spinte al ramo remoto per myNewFeature
un paio di giorni dopo, developer2, fonde di nuovo myNewFeature in newNew
Questo causerà agli altri sviluppatori l'odio per developer1?
force
rewriting history
, è unrebase
we
? fai parte di una squadra di più di te?they
dite (le persone che ne sanno più di me) che se condividete il codice di quanto non dovreste usarerebase
. Perché non lo stai facendogit pull
egit merge
?