2012-04-04 37 views
26

Tôi là loại mới để kiểm soát phiên bản với GIT. Tôi đọc số này Guide và đang theo cách tiếp cận cơ bản được hiển thị trong biểu đồ HERE. Tuy nhiên, tôi có một số nghi ngờ về cách sử dụng các nhánh git để tách biệt việc phát triển các tính năng mới từ mã hiện có.Cách sử dụng đúng git và các chi nhánh

Đây là một ví dụ. Giả sử rằng lúc bắt đầu, kho của tôi chứa hai chi nhánh chủ yếu sau đây:

  • Thạc sĩ ngành (chứa các phiên bản phát hành)
  • Phát triển Chi nhánh (chứa các bản sửa lỗi mới hoặc các tính năng để tách chúng ra khỏi các tính năng dự án hiện có)

Khi tôi cần phát triển các tính năng hoặc mô-đun mới, tôi tạo các chi nhánh từ Phát triển và bắt đầu các dự án mã mới tại đó. Ví dụ: tôi tạo ba chi nhánh mới để thêm các tính năng liên quan đến Sun, StarSuperNova. Bây giờ, kho chứa của tôi năm chi nhánh:

  • Thạc sĩ ngành: Phát hành 1.0.0
  • Phát triển chi nhánh: Sửa đổi sau khi phát hành 1.0.0
  • chi nhánh NewModule_Sun: thêm Sun dự án (tạo từ Phát triển chi nhánh)
  • chi nhánh NewModule_Star: thêm sao để dự án (tạo từ Phát triển chi nhánh)
  • chi nhánh NewModule_SuperNova: thêm SuperNova để Project (tạo từ Phát triển chi nhánh)

Đối với phiên bản 1.0.1, tôi muốn bao gồm các mô-đun SunStar, nhưng không bao gồm SuperNova. Vì vậy, tôi kết hợp chúng với phát triển và sau đó hợp nhất phát triển với phát hành:

  1. Merge NewModule_Sun vào Phát triển
  2. Merge NewModule_Star vào Phát triển
  3. Merge Phát triển thành Master (phát hành 1.0.1)

Nhánh Phát triển cần được lưu giữ vĩnh viễn, nhưng các chi nhánh SunStar không còn cần thiết nữa. Họ sẽ bị xóa:

  1. Xóa chi nhánh NewModule_Sun
  2. Xóa chi nhánh NewModule_Star

Sau những thay đổi kho của tôi chứa ba ngành sau đây:

  • Thạc sĩ Chi nhánh: Phát hành 1.0. 1
  • Phát triển chi nhánh: Sửa đổi sau khi phát hành 1.0.1
  • Chi nhánh NewModule_SuperNova: Sửa đổi sau khi phát hành 1.0.0 (được tạo ra từ Phát triển khi nó không được sáp nhập với chi nhánh sao/Sun)

==

Thứ nhất, tôi đang sử dụng các chi nhánh git chính xác?

Thứ hai, tôi đã xem lại lịch sử của chi nhánh Phát triển cuối cùng và có vẻ như tôi đã mất một số thông tin trên số NewModules. Điều đó có bình thường không? Và, có thể chuyển tất cả thông tin lịch sử sang nhánh Phát triển không?

Cảm ơn bạn !!

+1

Điều này có thể hữu ích. http://stackoverflow.com/questions/2613903/does-deleting-a-branch-in-git-remove-it-from-the-history – codef0rmer

Trả lời

16

Tôi có đang sử dụng git hợp lý không?

Có quy trình làm việc mà bạn mô tả là khá nhiều quy trình làm việc chuẩn. Bạn tạo ra một số chi nhánh, bạn làm việc trên nó và khi bạn hoàn thành, bạn hợp nhất nó và loại bỏ các chi nhánh không cần thiết (trừ khi bạn sẽ tiếp tục phát triển trên nhánh đó).

Sau khi xóa chi nhánh, xem lịch sử dường như với tôi rằng tôi đã mất mọi thông tin về chính nhánh ... đó có phải là bình thường không?

Có điều này là bình thường.

có thể xóa chi nhánh nhưng để lại thông tin lịch sử không gián đoạn?

Không chắc chắn ý của bạn ở đây. Miễn là bạn đã hợp nhất các chi nhánh trước khi xóa nó, lịch sử vẫn còn đó. Bạn vừa sáp nhập nó vào một nhánh khác và lịch sử có thể được nhìn thấy trên nhánh đó. Không có cách nào để biết khi một chi nhánh bị xóa nếu đó là những gì bạn đang yêu cầu.

+0

ah ok .. Tôi đang tìm kiếm một cách (mà bạn nói với tôi rằng đó là impossibile) để xem bắt đầu và kết thúc của một chi nhánh ... đó là một điều đáng tiếc: ( – Marcx

+0

@Marcx Tôi hơi trễ một chút, nhưng có thể bạn vẫn đang tìm kiếm cờ này "git merge --no-ff branchname" –

9

Tôi khuyên bạn nên đọc http://nvie.com/posts/a-successful-git-branching-model/ xác định mẫu tốt cho phân nhánh git.

Tôi nhận thấy rằng tôi giữ các nhánh phát triển trong một khoảng thời gian, cho đến khi thời gian hiển thị lịch sử thay đổi bạn thực hiện trong các sửa đổi đó không đáng kể (khoảng 6 tháng) và sau đó xóa chúng.

+0

Tôi đã đọc ... Tôi thực sự đang sử dụng hệ thống đó ... Không có giải thích câu hỏi của tôi về việc xóa một chi nhánh ... đó là cơ bản nghi ngờ chính của tôi :) – Marcx

+0

Cảm ơn. Là một n00b hoàn chỉnh cho các mô hình phân nhánh, liên kết của bạn chính xác là những gì tôi cần. –

Các vấn đề liên quan