2008-11-12 32 views
113

Chi nhánh chủ đề git là gì? Nó có khác với một nhánh bình thường theo một cách nào đó không? Có bất kỳ chi nhánh nào không phải là ngành chủ đề không?Chi nhánh chủ đề git là gì?

Trả lời

90

Nhánh chủ đề thường là nhánh nhẹ mà bạn tạo cục bộ và có tên có ý nghĩa đối với bạn. Họ là nơi bạn có thể làm việc để sửa lỗi hoặc tính năng (chúng cũng được gọi là các nhánh tính năng) dự kiến ​​sẽ mất một thời gian để hoàn thành.

Loại chi nhánh khác là "nhánh từ xa" hoặc "chi nhánh theo dõi từ xa". Loại chi nhánh này theo sau sự phát triển của ai đó của người khác hoạt động và được lưu trữ trong kho lưu trữ của riêng bạn. Bạn định kỳ cập nhật chi nhánh này (sử dụng git fetch) để theo dõi những gì đang xảy ra ở nơi khác. Khi bạn đã sẵn sàng để bắt kịp với những thay đổi của mọi người khác, bạn sẽ sử dụng git pull để tìm nạp và hợp nhất.

Tôi cũng đã thấy một loại chi nhánh khác về bản chất là một cây tệp hoàn toàn riêng biệt trong cùng một kho lưu trữ. Ví dụ: Git repository itself chứa các đầu có tên manhtml chứa nội dung hoàn toàn khác với chi nhánh master. Tôi không biết những loại cành này thường được gọi là gì.

+6

Tôi đang tìm cách để có hai chi nhánh mà không có chung một cam kết tổ tiên và thấy điều này: http://madduck.net/blog/2007.07 .11: Tạo-một-git-chi nhánh-không-tổ tiên/ –

+1

Wrt cây riêng biệt, tôi tin rằng đôi khi chúng được gọi là chi nhánh trẻ mồ côi, tương tự như cách Github đề xuất bạn [tạo trang github theo cách thủ công] (https://help.github.com/articles/creating-project-pages-manually) – max

+1

Tại sao bạn có nói một nhánh chủ đề phải là địa phương không? Không có lý do gì để nghĩ rằng bạn có thể không muốn đẩy một nhánh chủ đề. Và, tương tự, các nhà phát triển khác có thể tạo ra các nhánh chủ đề của riêng họ và bạn muốn kéo chúng. Câu trả lời này dường như gây nhầm lẫn cho hai thuộc tính hoàn toàn không liên quan đến các nhánh: cho dù nhánh là địa phương hay không liên quan chút nào đến việc nó là nhánh chủ đề hay không. –

72

Đó không phải là thuật ngữ kỹ thuật; nó chỉ đề cập đến một chi nhánh được tạo ra để thực hiện một tính năng cụ thể hoặc sửa lỗi. "Chủ đề" là lý do cho việc tạo ra các chi nhánh, về cơ bản.

+2

yep. trái ngược với một chi nhánh cá nhân, nơi bạn có cành: bob, alice, mat, vv – webmat

4

có vẻ như loại nhánh nổi bật nhất và quan trọng không phải là nhánh chủ đề sẽ phát hành nhánh trên kho lưu trữ lớn, có sẵn công khai, phải không?

Điều đó có thể phù hợp với bạn, nhưng đó là về bạn và dự án mà bạn đang nghĩ đến; nó không được xác định bởi Git.

Hầu hết các hệ thống kiểm soát phiên bản (đặc biệt là các hệ thống điều khiển tập trung) quy định hoặc thực thi quy trình làm việc cụ thể, bao gồm cả việc sử dụng chi nhánh có ý nghĩa gì. Git (và ở một mức độ nào đó hầu hết các VCS được phân phối) xem xét quy trình làm việc, nhánh nào được sử dụng, khi nào cam kết, các repos khác nhau được sử dụng cho, v.v ... đều được người dùng lựa chọn và thỏa thuận giữa các người dùng (chính sách). Vì vậy, Git không thực thi những kỹ thuật này.

Đây là một trong những điều khiến Git khó học hỏi. Oliver Steele giải thích điều này từ quan điểm của người dùng, viết về Commit Policies.

25

https://github.com/dchelimsky/rspec/wiki/Topic-Branches giải thích rõ điều này.

Chi nhánh “chủ đề” là một nhánh riêng biệt mà bạn sử dụng khi làm việc trên một “chủ đề” (sửa lỗi, tính năng mới hoặc ý tưởng thử nghiệm). Làm việc trên một chi nhánh chủ đề thay vì trực tiếp trên đầu trang của “bậc thầy” được khuyến khích bởi vì:

... {ghé thăm liên kết ...}

Vì vậy, đối với tất cả những lý do này nó được khuyến khích sử dụng một chi nhánh chủ đề để chuẩn bị các bài nộp ngay cả đối với các đóng góp đơn giản như các sửa lỗi đơn cam kết và tương tự.

Mẫu này cũng đưa ra các ví dụ. Điều này khiến tôi suy nghĩ, đây có lẽ là điều mà hầu hết các cửa hàng đã làm. Tất cả các dự án nhanh nhẹn mà tôi từng làm. Tôi upvoted thứ "Nó không phải là một thuật ngữ kỹ thuật" bởi vì tôi cảm thấy điều này chạm vào móng tay trên đầu.