2010-06-23 9 views
13

Quand est-ce que j'utilise update vs merge? Si je fais un pull à partir d'un dépôt distant, je lis que je dois faire une mise à jour pour obtenir ces changements dans mon répertoire de travail. Mais d'autres fois je lis que je dois fusionner. Est-ce que je veux peut-être toujours faire une mise à jour après un pull, et faire une fusion seulement s'il y a des conflits?Mercurial - Quand utiliser la mise à jour

Qu'est-ce que je ne comprends pas ici?

Répondre

16

Si vous avez des validations locales: fusion. Si vous avez des modifications locales non validées: update (qui va fusionner).

Habituellement, lorsque vous effectuez un commit localement, il forke l'arbre lorsque vous tirez. Dans ce cas, vous devez toujours fusionner (ou rebaser avec l'extension rebase). Si vous avez des modifications locales non validées, vous pouvez mettre à jour et fusionner les modifications dans votre espace de travail.

+2

Bien que cela soit correct au sens technique, sachez que tirer et mettre à jour dans un répertoire de travail non affecté (sale) perd beaucoup de l'avantage de mercurial. Si vous avez des changements significatifs, engagez-les d'abord afin de ne pas corrompre le contexte et potentiellement perdre du travail dans la fusion. – codekaizen

14
  • hg update est de rendre votre répertoire de travail de la même qu'une fusion révision
  • hg donné ne sera pas réinitialiser votre répertoire de travail à une révision donnée (il se réfère toujours le même), mais fusionner les modifications d'une autre révision dans votre répertoire de travail actuel.

Ainsi, après une traction, une mise à jour de hg sera changement votre répertoire de travail pour refléter ce que vous avez tiré dans votre dépôt.
Mais hg merge ne réinitialisera pas votre répertoire de travail, seulement fusionner les changements entre votre répertoire de travail et ce que vous avez tiré.

hg pull -u va tirer et mettre à jour, refusant de fusionner ou remplacer les modifications locales.

  • Si la traction ajouter une nouvelle tête dans votre pension, vous aurez besoin de fusionner
 
added 1 changesets with 1 changes to 1 files (+1 heads) 
(run 'hg heads' to see heads, 'hg merge' to merge) 
  • Si la traction ajouter aucun nouveau HEAD dans votre repo, une simple mise à jour est assez
Questions connexes