2010-04-01 7 views
1

Je crée un référentiel fonctionnel dans HG. Et j'ai modifié certains fichiers.Comment puis-je déplacer toutes mes modifications vers une branche?

Comment puis-je déplacer toutes mes modifications vers une branche (une branche que je n'ai pas créée)? (une sorte de 'git stash' et le changement de case à céder à une branche.En fait, je ne sais pas comment je peux le faire en git non plus.Si vous le savez, j'apprécie si vous pouvez me le dire en git aussi)

Merci.

Répondre

2

Vérifiez d'abord que ni le ShelveExtension ni le AtticExtension ne font exactement ce que vous voulez.

Si vous le faites manuellement dans mercurial j'éviterais une branche nommée, et utiliserais juste une autre tête. Si par exemple, vous avez déjà fait les changements que vous voulez "ranger" pour un peu.

hg commit -m 'working on Xxx' # you created a new tip 
hg update -r -2    # switch to the revision before the tip 

et maintenant commencer à travailler là. Vous pouvez trouver cette branche anonyme plus tard avec hg heads et la fusionner avec hg merge.

+0

+1. Vous pouvez dire par ma réponse que je suis encore trop dans le modèle Git «branche nommée» et pas assez dans le modèle Mercurial «une branche (et quelques branches anonymes étroitement liées) par repo») j'ai encore du mal à m'adapter pour créer un nouveau repo pour créer une nouvelle branche ... – VonC

+1

Merci, VonC, vous êtes un acte de classe. Je suis une minorité décroissante dans le monde de Mercurial puisque je suis encore un gars de "clones en branches" selon les définitions du "Guide de branchement à Mercurial" auquel vous avez sagement lié, mais cela m'aide toujours à trouver le soln n'implique pas de taper "hg branch". :) –

4

Pour Git, si vous ne l'avez pas encore commis vos fichiers, il suffit de taper:

$ git checkout -b newbranch 
$ git commit -m "a message" 

Chaque fichier mis en scène à ce moment sera engagé dans la nouvelle branche.

Pour Mercurial, les branches ne sont pas des noms par défaut, et une nouvelle branche se produit uniquement (à moins d'un repo) si un commit a un parent qui a déjà un enfant commit:

enter image description here

Mais vous pouvez créer un nouveau nom de la branche pour votre prochain commit:

hg branch branch-1   # start a new branch name 
          # modify something in the repository 
hg commit -m "branch-1"  # the changeset has branch name "branch-1" 

(Voir aussi Guide to branching in Mercurial et Git & Mercurial models)

+0

OP a demandé de vérifier dans une branche _existing_, donc à la place de 'git checkout -b' et' hg branch', vous devriez utiliser 'git checkout newbranch' et' hg update branch-1' pour passer à la branche. (Et je pense qu'aucune de ces commandes ne devrait jouer avec les fichiers modifiés dans l'arborescence de travail.) – idbrii

Questions connexes