J'utilise un dépôt Git intermédiaire pour refléter un dépôt SVN distant, à partir duquel les gens peuvent cloner et travailler. La branche master du dépôt intermédiaire est rebasée chaque nuit à partir du SVN amont, et nous travaillons sur des branches de fonctionnalités. Par exemple :
remote:
master
local:
master
feature
Je peux pousser avec succès ma branche de fonctionnalité vers la télécommande, et obtenir ce que j'attends :
remote:
master
feature
local:
master
feature
J'ai ensuite réorganisé la branche pour suivre la télécommande :
remote:
master
feature
local:
master
feature -> origin/feature
Et tout va bien. Ce que je voudrais faire à partir d'ici, c'est rebaser la branche feature sur la branche master sur la machine distante, mais je voudrais le faire depuis ma machine locale. J'aimerais être capable de le faire :
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Pour garder la branche de fonctionnalité distante à jour avec le master distant. Cependant, cette méthode provoque une plainte de 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
fait l'affaire mais provoque un commit de fusion que j'aimerais éviter. Je suis préoccupé par le fait que le message indique feature -> feature
plutôt que feature -> origin/feature
mais c'est peut-être juste une question de présentation.
Est-ce que j'ai raté quelque chose, ou est-ce que je m'y prends de la mauvaise façon ? Il n'est pas essentiel d'éviter d'effectuer le rebasement sur le serveur distant, mais cela rend la résolution de tout conflit de fusion à partir du rebasement beaucoup plus difficile.
0 votes
J'ai eu le même problème. Je voulais lancer un modèle de rebasement de branche ( comme ceci ). Puis j'ai remarqué que j'avais fait une erreur : Si vous voulez rebaser (Vous ne devez pas pousser vos changements sur la fonctionnalité distante avant de faire le rebasement sur master) Vous avez donc ajouté du code à votre fonctionnalité. Et maintenant vous voulez le pousser vers votre fonctionnalité distante. Avant de le faire : -Vous devriez faire un fetch et un pull sur votre master si vous en avez besoin. -Vous devez rebaser sur le master s'il y a eu des changements sur le master que vous n'avez pas dans votre fonctionnalité. Maintenant vous pouvez pousser la fonctionnalité et il n'y aura pas de problème.