Sto usando un repository Git intermedio per eseguire il mirroring di un repository SVN remoto, dal quale le persone possono clonare e lavorare. Il repository intermedio ha il suo ramo master reimpostato di notte dall'SVN a monte e stiamo lavorando su rami di feature. Per esempio:
remote:
master
local:
master
feature
Posso inviare con successo il mio ramo di funzionalità al telecomando e finire con quello che mi aspetto:
remote:
master
feature
local:
master
feature
Ho quindi reimpostato il ramo per tenere traccia del telecomando:
remote:
master
feature
local:
master
feature -> origin/feature
E va tutto bene. Quello che vorrei fare da qui è di reimpostare il ramo della funzione sul ramo principale sul telecomando, ma vorrei farlo dal mio computer locale. Mi piacerebbe poter fare:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Per mantenere aggiornato il ramo della funzione remota con il master remoto. Tuttavia, questo metodo fa lamentare Git:
To <remote>
! [rejected] feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
git pull
fa il trucco ma provoca un commit di unione che vorrei evitare. Sono preoccupato che il messaggio affermi feature -> feature
piuttosto che, feature -> origin/feature
ma questa potrebbe essere solo una cosa di presentazione.
Mi sto perdendo qualcosa o lo sto facendo in modo completamente sbagliato? Non è fondamentale evitare di effettuare il rebase sul server remoto, ma rende molto più difficile risolvere eventuali conflitti di unione dal rebase.