Changement de la racine d'une branche git
Je suis en utilisant git et que vous voulez changer la base d'une sortie de la branche. Ceci est causé par un système de déploiement, qui tire de cette explicites de la branche dans mon environnement de production. Lors de la planification de mes sorties, j'ai créer une balise à chaque fois que je veux aller en direct. Mais ma branche spéciale de trop de changements, de sorte git reset --hard v1.0
ne fonctionne pas.
Voici un petit exemple. Je veux que ce
C---D---E deploy
/
A---B---F---G master
\
v1.0
pour devenir ce
C---D---E deploy
/
A---B---F---G---H---I---J---K master
\ \
v1.0 v1.1
Peut-être git rebase
est ce que je recherche, mais les pages de manuel ne m'aide pas. Merci pour vos réponses!
OriginalL'auteur micha149 | 2011-04-19
Vous devez vous connecter pour publier un commentaire.
git rebase
devrait, comme vous le dites, vous permettent de modifier la base de déployer:Mais vous allez vous retrouver avec
Qui est, le SHA1 de la commet une partie de
deploy
branche sont réécrites, ce qui n'est pas trop mal si personne ne cloné ditdeploy
branche et y travaille.Depuis c'est une branche de déploiement, qui est probablement le cas (c'est à dire que personne ne travaillait sur un clone de ladite branche).
oui, j'ai confondu avec un nom de branche!
OriginalL'auteur VonC
Je ne comprends pas pourquoi vous voulez perdre de l'original de votre branche. Ce que je voudrais faire dans un tel cas:
MODIFIER: ajout du schéma
Vous vous retrouverez avec quelque chose comme ça
avec mon propositin, vous conservez l'original de votre direction et vous avez obtenu un nouveau fusionné sur de J, ce qui signifie que vous pouvez toujours modifier votre ancien 1.0-patché branche et de travailler sur le nouveau (dans votre dessin, vous avez supprimé C - D - E, donc ma question)
En fait, j'aime cette solution mieux, si vous avez besoin de garder une trace de chaque effort de développement nécessaire pour chaque déploiement. (Si +1), Mais, si l'effort de développement sont toujours les mêmes, une simple rebase serait suffisant.
Le nom de la branche dans le système de production est fixe. Si je recrée la direction générale, le système de production semble perdu le suivi. Donc, je préfère le rebase variante. Thx
OriginalL'auteur Bruce
oui, vous pouvez utiliser git rebase pour obtenir l'effet désiré. la commande suivante permettra à la caisse de la
deploy
de la branche et de relire tous sa s'engage, qui ne sont pas accessibles par le biais dev1.1
, sur le dessus dev1.1
:(le verbeux serait:
git rebase --onto v1.1 v1.0 deploy
)mais pourquoi la relocalisation et de la modification de l'histoire? vous pouvez simplement modifier la ligne principale de développement dans votre déploiement de la direction de la
cela permettra de laisser tous vos commettre des hachages intacte, votre histoire sera alors ressembler à ceci (
M
étant la fusion de commettre):depuis conflits pourraient survenir au cours de rebase ainsi que des cours de fusion, vous aurez une histoire de conflits de fusion lors de l'utilisation de la fusion. avec cela, vous n'avez pas une histoire de conflits qui s'est passé au cours de rebase opération. à l'aide d'une fusion à base de flux de travail, vous pouvez ensuite voir vos conflits dans l' (combiné) diff de la fusion s'engage.
OriginalL'auteur knittl
git rebase doit travailler pour vous:
ou
Ont un coup d'oeil à http://progit.org/book/ch3-6.html - devrait vous aider à comprendre rebase mieux je pense
master~1
pour vousOriginalL'auteur manojlds