Toda vez que você efetua um commit em um DVCS, tecnicamente está criando um branch na história, toda vez que o envia de volta ao repositório abençoado e o integra, aqui vem a parte interessante:
- Se ninguém fez uma alteração durante o seu commit, ele não parecerá uma ramificação no DAG (gráfico acíclico direcionado)
- Se alguém fez uma alteração durante o seu commit, ele parecerá uma ramificação no DAG, apenas sem nome
Lembre-se do botão "fork" no Bitbucket / github ?, o bifurcação pode ser considerado um sinônimo de ramificação, e o que o botão "fork" faz é apenas um clone desse repositório para sua conta.
A única vantagem da "clonagem para ramificação" é poder trabalhar simultaneamente em dois pontos da história e, ironicamente, para seu colega de trabalho, é um fluxo de trabalho comum para trabalhar em ramificações diferentes ao mesmo tempo (sem ter que ir e voltar) )
Diga ao seu colega de trabalho para aprender como ramificar , é muito fácil, aqui, tenha um tutorial:
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
"Clonagem para ramificação" faz sentido quando você trabalha em ramificações diferentes ao mesmo tempo ou quando deseja experimentar um experimento sem criar uma ramificação permanente no histórico e ainda poder integrá-lo a uma ramificação já existente. .
Pessoalmente, não gosto dessa prática e prefiro fazer ramos e fechá-los, se necessário. Aqui, é assim que você faz:
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)
Espero que isso esclareça suas dúvidas de ramificação do DVCS, aqui as ramificações não são mais assustadoras.