En forçant un Git rebase

Cas d'utilisation: Trois git clones d'un même référentiel A, B, B2. Les pensions de titres A et B sont normaux, B2 est nu (avec --bare). Le tout sous mon contrôle, c'est à dire il y a un seul utilisateur.

Sur le site B, je ne de travail (plusieurs commits git), puis git push B2.

  • Sur le site, la commande git pull B2.
  • Sur le site A, git rebase -i xx..TÊTE de squash certains s'engage et propre histoire (un bon de commande).
  • Q: Comment communiquer le résultat sur le site B?

Je peux le faire:

  • git push --force B2

Mais ce n'est pas tout à fait droit. Le site B répertoire de travail aura une étrange histoire après un git pull B2.

J'ai besoin d'une certaine manière de ne pas utiliser l'option --force. J'aimerais jeter xx..sur la TÊTE
B2, puis pousser normalement à partir de A. peut-être:

Sur B2 (le nu repo)

  • git reset --hard xx

Pas sûr que ce soit suffisant. Je peux le faire par re-clonage du site A (supprimer B2, git init --bare, pousser à partir d'Un), mais qui semble exagéré. Le Comment pousser/tirer Git rebase post semble pertinente, mais je suis en espérant une réponse d'ailleurs "ne faites pas ceci".

Ligne de fond, comment dois-je vraiment et complètement jeter s'engage sur la B2 de sorte que le relocalisée histoire sera accepté comme nouveaux commits?

OriginalL'auteur FDS | 2011-07-29