Mỗi khi bạn thực hiện một cam kết trong DVCS, về mặt kỹ thuật bạn đang tạo một nhánh trong lịch sử, mỗi khi bạn đẩy nó trở lại kho lưu trữ may mắn mà bạn tích hợp lại, đây là phần thú vị:
- Nếu không ai thực hiện thay đổi trong cam kết của bạn, nó sẽ không giống như một nhánh trong DAG (biểu đồ chu kỳ theo hướng)
- Nếu người khác thực hiện thay đổi trong cam kết của bạn, nó sẽ trông giống như một nhánh trong DAG, chỉ chưa được đặt tên
Hãy nhớ nút "fork" trong Bitbucket / github?, Forking có thể được coi là đồng nghĩa của việc phân nhánh và nút "fork" làm gì chỉ là một bản sao của kho lưu trữ đó vào tài khoản của bạn.
Ưu điểm duy nhất của "nhân bản vào chi nhánh" là có thể làm việc đồng thời tại hai điểm trong lịch sử và trớ trêu thay cho đồng nghiệp của bạn, đó là một quy trình làm việc chung để làm việc trên các chi nhánh khác nhau cùng một lúc (mà không phải quay đi quay lại ).
Nói với đồng nghiệp của bạn để học cách phân nhánh , rất dễ dàng, ở đây, có một hướng dẫn:
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
"Nhân bản vào chi nhánh" có ý nghĩa khi bạn làm việc ở các chi nhánh khác nhau cùng một lúc hoặc khi bạn muốn thử một thử nghiệm mà không tạo chi nhánh cố định trong lịch sử và vẫn có thể tích hợp nó trở lại chi nhánh đã có .
Cá nhân tôi không thích cách làm này và thích làm chi nhánh và đóng chúng nếu cần thiết. Đây là cách bạn làm điều đó:
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)
Hy vọng điều này sẽ xóa tan nghi ngờ phân nhánh DVCS của bạn, ở đây các chi nhánh không còn đáng sợ nữa.