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
Vous devez vous connecter pour publier un commentaire.
De messagerie unifiée, de jeter xx..la TÊTE sur B2, puis en poussant normalement à partir d'Un est à peu près la définition exacte de
--force
. Utilisez simplement--force
de nouveau en tirant à B, et vous serez d'accord, aussi longtemps que vous le rebase toutes les branches en B retour à commettre xx ou plus tôt avant de tirer.OriginalL'auteur Karl Bielefeldt
jette s'engage simplement dans le sens dans lequel vous voulez qu'ils soient jetés.
OriginalL'auteur nes1983