Réinitialiser/annuler une branche à l'autre des branches de l'état?
J'ai une branche Un et une branche B (et certaines autres branches).
Permet de dire Uns'engager histoire ressemble:
- commettre 5
- commettre 4
- commettre 3
- ...
Et Bs'engager histoire:
- certains autres de commettre
- commettre 4
- de fusion et d'autres choses de la direction de C (en direction de la B)
- commettre 3
- ...
Fondamentalement, ce que je veux, c'est "supprimer" toutes les modifications apportées par les commits certains autres de commettre et de fusion et d'autres choses de la direction de C de la direction générale B.
Je veux l'arbre de travail de la branche B à être exactement la même, comme la branche Un'arbre de travail.
Comment puis-je y parvenir?
OriginalL'auteur daniel451 | 2015-02-27
Vous devez vous connecter pour publier un commentaire.
Une façon d'y parvenir est par le biais de
git reset
. Alors que sur la brancheB
exécuterPar la suite, la direction de la
B
points à la tête de validation deA
. Le--hard
option permet de réinitialiser l'index et le travail de l'arbre, de sorte que tous les dossiers sont remis à la version de la direction généraleA
. L'ancien chef de validation deA
est copié à.git/ORIG_HEAD
afin de permettre l'annulation de la modification.Alternativement - bien que pas sur la branche
B
- vous pouvez supprimer la brancheB
et re-créé comme ceci:Autre que la première suggestion, cela laissera l'index et de l'arbre de travail intacte.
Vous pouvez ajouter la
--force
option pour lepush
commande pour remplacer la télécommande de la branche. Mais vous devez être bien informés sur les conséquences, comme par exemple décrit ici ou ici.OriginalL'auteur Rüdiger Herrmann
Si vous voulez que votre branche
B
de regarder exactement comme brancheA
. Vous pourriez faire unreset --hard
Être prudent, vous perdrez s'engage dans ce cas. Votre branche-B va ressembler exactement de la branche, quel que soit commits ont été apportées à la branche B, qui n'étaient pas présents dans la branche-Un, sera perdu. Aussi, si la branche B est partagé avec d'autres personnes, il n'est pas recommandé d'effectuer cette opération.
Dans ce cas, vous pourriez essayer de revenir les commits que vous ne voulez pas dans la branche B
La deuxième commettre ressemble à une fusion s'engager alors vous pourriez avoir à passer le parent.
OriginalL'auteur pratZ
Pour la réalisation, nous allons ajouter cette méthode très simple pour y parvenir :
Il tire parti du fait que les branches de git sont que de simples pointeurs. Cette commande remplace la réf à la pointe de commettre une branche à l'autre. Pas besoin d'aller dans la complexité de la structure changements de construire quelque chose que vous avez déjà.
OriginalL'auteur RomainValeri