Déplacement de la tête principale vers une branche
J'ai plusieurs branches et branche master. Feature2 est fait. Normalement, j'aurais rebase (travail avec une télécommande repo SVN et désirez continuer l'histoire, donc pas de fusion) et ff-fusion. Mais depuis que le maître n'en a pas changé depuis que j'ai ramifiée, je voudrais déplacer la tête de maître (à E
) à G
. À l'aide de git branch -f master G
n'entraîne pas de changements visibles, je suppose que c'est parce que G
est sur une autre branche.
Est-il sécuritaire d'utiliser git update-ref -f master G
ici à la place? Dois-je coller avec rebase/ff-fusion? Quelque chose d'encore mieux?
feature1 C-D
/
master A-B-E
\
feature2 F-G
Merci.
source d'informationauteur kostja | 2012-05-25
Vous devez vous connecter pour publier un commentaire.
Régulier de fusion de G en maître fera l'affaire, pas besoin de rebase:
Vous n'avez pas à fusionner les branches, une réinitialisation est assez. En supposant que le maître est vérifié:
Pas de fusion nécessaire - il suffit de renommer les branches. Puisque vous n'avez pas de soins sur feature2 ("fait"), ni le maître existante ('E') vous avez juste besoin de ce qui suit.
Simple est le meilleur?
Rappelez-vous il y a deux concepts clés impliqués:
Lorsque vous effectuez une opération de fusion (de différentes saveurs et notamment rebase) vous sont en train de changer la validation graphique. Les modifications consistent à ajouter des nœuds, ajout de liens ou peut-être se des liens. Références (y compris les succursales et les balises) uniquement s'engage et ainsi changer une référence change juste la pointe-de s'engager à - pas de la structure du graphe.
Donc, dans votre cas, il n'est pas nécessaire de modifier la structure, juste un changement de références.
Une version en ligne est:
qui maintient la feature2 direction (à la différence de l'avant deux-liner qui les axes feature2).
La mise à jour-ref est sûr. Un chef de la direction générale n'est rien de plus qu'un peu de "lisez-moi!" étiquette accrochée sur un commit. C'est purement par convention que git le ramasse et l'accroche sur un autre de s'engager pour vous à la fois.
Ce n'
git log --decorate --oneline --all
dire?git show master
?Il pourrait être préférable d'effectuer un non avance rapide de fusion de fonction 2 en maître en utilisant
git merge --no-ff feature2
si vous avez coché sur la branche master. Vous devriez vous retrouver avec la suite de