Каждый раз, когда вы делаете коммит в DVCS, вы технически делаете ветку в истории, каждый раз, когда вы возвращаете его в благословенный репозиторий, вы интегрируете его обратно, вот вам интересная часть:
- Если никто не внес изменения во время вашей фиксации, он не будет выглядеть как ветвь в DAG (направленный ациклический граф)
- Если кто-то внес изменения во время вашего коммита, это будет выглядеть как ветка в DAG, только без имени
Помните кнопку «fork» в Bitbucket / github ?, разветвление можно рассматривать как синоним ветвления, а то, что делает кнопка «fork», является просто клоном этого хранилища для вашей учетной записи.
Единственное преимущество «клонирования в ветвь» - возможность работать одновременно в двух точках истории, и, как ни странно, для вашего коллеги, это общий рабочий процесс для одновременной работы в разных ветвях (без необходимости переходить назад и вперед). ).
Скажите своему коллеге, чтобы научиться ветвиться , это очень легко, здесь, есть учебник:
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
«Клонирование в ветвь» имеет смысл, когда вы работаете в разных ветвях одновременно или когда вы хотите попробовать эксперимент, не создавая постоянную ветвь в истории, и при этом сможете интегрировать ее обратно в уже существующую ветвь. ,
Мне лично не нравится эта практика, и я предпочитаю делать ветки и закрывать их при необходимости. Вот как вы это делаете:
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)
Надеюсь, что это очистит ваши сомнения по ветвлению DVCS, здесь ветки больше не страшны.