Trên thực tế, có một khả năng sở hữu thứ ba và có lẽ nhiều người khác, vì GIT là một triển khai của khung SCM hơn là triển khai phương pháp SCM. Khả năng thứ ba này dựa trênrebase
.
Tiểu ban rebase
GIT lấy một loạt các cam kết (thường là từ điểm phân nhánh của bạn đến đỉnh của nhánh chủ đề của bạn topic
) và phát lại chúng ở một nơi khác (thường là ở đầu nhánh tích hợp của bạn, ví dụ master
). Tiểu ban rebase
sản xuất các cam kết mới, tạo cơ hội sắp xếp lại các cam kết theo hình thức dễ xem xét hơn. Điều này mang lại một loạt các cam kết mới, tương tự như trước đây topic
nhưng xuất hiện bắt nguồn từ đầu nhánh tích hợp. Chi nhánh mới này vẫn được gọi topic
bởi GIT, do đó tham chiếu cũ bị loại bỏ. Tôi không chính thức dán nhãn topic-0
trạng thái ban đầu của chi nhánh của bạn vàtopic-1
và v.v.
Đây là gợi ý của tôi cho topic
chi nhánh của bạn :
(Bước không bắt buộc) Bạn tương tác rebase chi nhánh chủ đề của bạn topic
ở điểm phân nhánh của nó (xem --fixup
lựa chọn cho commit
và -i
và --autosquash
tùy chọn trên rebase
), mang đến cho bạn cơ hội để viết lại cam kết của bạn trong một cách đó là dễ dàng hơn để xem xét. Điều này dẫn đến một chi nhánh topic-1
.
Bạn khởi động lại nhánh chủ đề của mình ở đầu nhánh tích hợp của bạn, tương tự như thực hiện hợp nhất, nhưng không làm ô nhiễm lịch sử với một sự hợp nhất chỉ là một tạo tác kỹ thuật phần mềm. Điều này dẫn đến một chi nhánh topic-2
.
Gửi topic-2
cho một đồng đội đánh giá nó dựa trên mẹo master
.
Nếu topic-2
ổn thì hợp nhất nó thành chủ.
LƯU Ý Các nhánh mà ở đó nhánh liên quan đến cây cam kết, tất cả sẽ được GIT gọi là giống nhau, do đó, ở cuối quá trình, chỉ có nhánhtopic-2
có tên trong GIT.
Ưu điểm:
- Không có mã lỗi thời trong xem xét.
- Không có giả mạo nào nước ngoài sáp nhập các đánh giá của người dùng (hiện tượng bạn mô tả trong lần 1).
- Cơ hội để viết lại cam kết một cách sạch sẽ.
Nhược điểm:
- Thay vì một chi nhánh
topic-0
, có ba nhánh hiện vật topic-0
, topic-1
và topic-2
được tạo ra trong các cam kết cây. (Mặc dù bất cứ lúc nào, chỉ một trong số họ có tên trong GIT.)
Trong kịch bản đầu tiên của bạn «nếu ai đó hợp nhất một cái gì đó giữa" 1. " và "2." »đề cập đến khoảng thời gian giữa việc tạo điểm nhánh và thời điểm bạn quyết định hợp nhất. Trong kịch bản này «nếu ai đó hợp nhất một cái gì đó giữa" 1. " và "2." »đề cập đến khoảng thời gian giữa rebase và hợp nhất, thường rất ngắn. Do đó, trong kịch bản tôi cung cấp, bạn có thể «khóa»master
nhánh trong thời gian hợp nhất mà không làm ảnh hưởng đáng kể đến quy trình làm việc của bạn, trong khi nó không thực tế trong kịch bản thứ nhất.
Nếu bạn đang thực hiện đánh giá mã hệ thống, có lẽ nên sắp xếp lại các cam kết theo cách thích hợp (bước tùy chọn).
Quản lý các tạo phẩm nhánh trung gian chỉ gặp khó khăn nếu bạn chia sẻ chúng giữa các kho lưu trữ.