Chaque fois que vous effectuez un commit dans un DVCS, vous créez techniquement une branche dans l'histoire, chaque fois que vous la repoussez dans le dépôt béni que vous réintégrez, voici la partie intéressante:
- Si personne n'a fait de changement pendant votre commit, cela ne ressemblera pas à une branche dans le DAG (graphique acyclique dirigé)
- Si quelqu'un d'autre a effectué un changement pendant votre commit, il ressemblera à une branche dans le DAG, uniquement sans nom
Rappelez-vous que le bouton "fork" dans Bitbucket / github?, Forking peut être considéré comme synonyme de branchement, et ce que fait le bouton "fork" n'est qu'un clone de ce référentiel sur votre compte.
Le seul avantage du «clonage vers une branche» est de pouvoir travailler simultanément à deux moments de l'histoire, et ironiquement pour votre collègue, c'est un workflow commun pour travailler sur différentes branches en même temps (sans avoir à faire des allers-retours) ).
Dites à votre collègue d'apprendre à créer une branche , c'est très simple, ici, ayez un tutoriel:
D:\>mkdir lol
D:\>cd lol
D:\lol>hg init
D:\lol>hg branch
default
D:\lol>touch lol
D:\lol>hg add lol
D:\lol>hg commit -m "lol"
D:\lol>hg branch lol
marked working directory as branch lol
(branches are permanent and global, did you want a bookmark?)
D:\lol>hg branches
default 0:35d562fafaf2
D:\lol>echo "lol" > lol
D:\lol>hg commit -m "New lol branch"
D:\lol>hg branches
lol 1:9384f923e78d
default 0:35d562fafaf2 (inactive)
D:\lol>hg branch
lol
D:\lol>hg update default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branch
default
D:\lol>hg update lol
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branch
lol
D:\lol>hg update default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branch
default
D:\lol>hg merge lol
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
D:\lol>hg commit -m "lol merge"
D:\lol>hg branch
default
D:\lol>hg update lol
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branch
lol
Le «clonage vers une branche» est logique lorsque vous travaillez dans différentes branches en même temps ou lorsque vous souhaitez essayer une expérience sans créer de branche permanente dans l'historique tout en étant capable de la réintégrer dans une branche déjà existante. .
Personnellement, je n'aime pas cette pratique et préfère faire des succursales et les fermer si nécessaire. Voici comment vous procédez:
D:\lol>hg branches
default 2:46420aca1612
lol 1:9384f923e78d (inactive)
D:\lol>hg branch
lol
D:\lol>hg commit --close-branch -m "Obai, glorious lol branch"
D:\lol>hg branches
default 2:46420aca1612
D:\lol>hg branch
lol
D:\lol>hg update default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branches
default 2:46420aca1612
D:\lol>hg branches --closed
default 2:46420aca1612
lol 3:4b79c577e029 (closed)
J'espère que cela dissipe vos doutes sur les branchements DVCS, ici les branches ne font plus peur.