Dưới đây là một số quy ước đặt tên chi nhánh mà tôi sử dụng và lý do cho chúng
Quy ước đặt tên chi nhánh
- Sử dụng nhóm mã thông báo (từ) ở đầu tên chi nhánh của bạn.
- Xác định và sử dụng mã thông báo dẫn ngắn để phân biệt các nhánh theo cách có ý nghĩa đối với quy trình làm việc của bạn.
- Sử dụng dấu gạch chéo để tách các phần của tên chi nhánh của bạn.
- Không sử dụng số trần làm bộ phận hàng đầu.
- Tránh tên mô tả dài cho các nhánh sống lâu.
Mã thông báo nhóm
Sử dụng mã thông báo "nhóm" trước tên chi nhánh của bạn.
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
Các nhóm có thể được đặt tên bất cứ điều gì bạn muốn để phù hợp với quy trình làm việc của bạn. Tôi thích sử dụng danh từ ngắn cho tôi. Đọc để rõ hơn.
Mã thông báo ngắn được xác định rõ
Chọn mã thông báo ngắn để chúng không thêm quá nhiều tiếng ồn vào mỗi tên chi nhánh của bạn. Tôi sử dụng những thứ này:
wip Works in progress; stuff I know won't be finished soon
feat Feature I'm adding or expanding
bug Bug fix or experiment
junk Throwaway branch created to experiment
Mỗi mã thông báo này có thể được sử dụng để cho bạn biết phần nào trong quy trình làm việc của bạn mà mỗi nhánh thuộc về.
Có vẻ như bạn có nhiều nhánh cho các chu kỳ thay đổi khác nhau. Tôi không biết chu kỳ của bạn là gì, nhưng hãy giả sử chúng là 'mới', 'thử nghiệm' và 'đã được xác minh'. Bạn có thể đặt tên cho các chi nhánh của mình bằng các phiên bản rút gọn của các thẻ này, luôn được đánh vần theo cùng một cách, để cả hai nhóm và nhắc nhở bạn đang ở giai đoạn nào.
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
Bạn có thể nhanh chóng cho biết các nhánh nào đã đạt đến từng giai đoạn khác nhau và bạn có thể nhóm chúng lại với nhau một cách dễ dàng bằng các tùy chọn khớp mẫu của Git.
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
Sử dụng dấu gạch chéo để tách các phần
Bạn có thể sử dụng hầu hết mọi dấu phân cách bạn thích trong tên nhánh, nhưng tôi thấy dấu gạch chéo là linh hoạt nhất. Bạn có thể thích sử dụng dấu gạch ngang hoặc dấu chấm. Nhưng dấu gạch chéo cho phép bạn thực hiện một số đổi tên chi nhánh khi đẩy hoặc tìm nạp đến / từ xa.
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
Đối với tôi, dấu gạch chéo cũng hoạt động tốt hơn để mở rộng tab (hoàn thành lệnh) trong trình bao của tôi. Cách tôi định cấu hình, tôi có thể tìm kiếm các nhánh có các phần phụ khác nhau bằng cách nhập các ký tự đầu tiên của phần đó và nhấn phím TAB. Zsh sau đó đưa cho tôi một danh sách các nhánh khớp với phần mã thông báo mà tôi đã nhập. Điều này hoạt động cho các mã thông báo trước cũng như các mã được nhúng.
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(Zshell rất có thể cấu hình về việc hoàn thành lệnh và tôi cũng có thể định cấu hình nó để xử lý dấu gạch ngang, dấu gạch dưới hoặc dấu chấm theo cùng một cách. Nhưng tôi chọn không.)
Nó cũng cho phép bạn tìm kiếm các nhánh trong nhiều lệnh git, như thế này:
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
Hãy cẩn thận: Như Slipp chỉ ra trong các bình luận, dấu gạch chéo có thể gây ra vấn đề. Vì các nhánh được triển khai dưới dạng đường dẫn, bạn không thể có một nhánh có tên là "foo" và một nhánh khác có tên là "foo / bar". Điều này có thể gây nhầm lẫn cho người dùng mới.
Không sử dụng số trần
Không sử dụng sử dụng số trần (hoặc số hex) như một phần của sơ đồ đặt tên chi nhánh của bạn. Bên trong mở rộng tab của tên tham chiếu, git có thể quyết định rằng một số là một phần của sha-1 thay vì tên nhánh. Ví dụ, trình theo dõi vấn đề của tôi đặt tên lỗi với số thập phân. Tôi đặt tên cho các chi nhánh liên quan của mình là CRnnnnn thay vì chỉ nnnnn để tránh nhầm lẫn.
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
Nếu tôi cố gắng mở rộng chỉ 15032, git sẽ không chắc chắn liệu tôi muốn tìm kiếm tên của SHA-1 hay chi nhánh, và các lựa chọn của tôi sẽ bị hạn chế phần nào.
Tránh các tên mô tả dài
Tên chi nhánh dài có thể rất hữu ích khi bạn đang xem danh sách các chi nhánh. Nhưng nó có thể gây cản trở khi nhìn vào các bản ghi một dòng được trang trí vì các tên nhánh có thể ăn hầu hết các dòng đơn và viết tắt phần hiển thị của nhật ký.
Mặt khác, tên nhánh dài có thể hữu ích hơn trong "hợp nhất cam kết" nếu bạn không thường xuyên viết lại chúng bằng tay. Thông báo cam kết hợp nhất mặc định là Merge branch 'branch-name'
. Bạn có thể thấy hữu ích hơn khi có các thông báo hợp nhất xuất hiện Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
thay vì chỉ Merge branch 'fix/CR15032'
.