Tuyên bố từ chối trách nhiệm: Tôi không phải là người dùng hg, vì vậy tôi đã đọc về hg nhưng không có nhiều kinh nghiệm đầu tiên về việc sử dụng nó.
git cung cấp một số công cụ rất mạnh mẽ và linh hoạt để quản lý các chi nhánh theo kiểu 'hàng đợi bản vá' cho nhiều trường hợp sử dụng cơ bản (và thậm chí một số phức tạp), git gốc đủ mạnh.
Thông thường, hầu hết các dự án đều giữ một nhánh chính ổn định ở trung tâm chỉ nhận được các cam kết mới và không bao giờ được 'tua lại' để cam kết trong nhánh chính được cố định.
Trên đầu trang của một người duy trì (hoặc một nhà phát triển) có thể duy trì một hoặc nhiều nhánh lỏng của các bản vá đang hoạt động (tức là cam kết) dựa trên nhánh ổn định.
hoạt động quản lý bản vá điển hình bao gồm:
rebasing hàng đợi bản vá vào nhánh ổn định mới nhất - sử dụng git rebase
,
sao chép hàng đợi bản vá vào một chi nhánh maintentance cũ - sử dụng git branch
và git rebase
,
sắp xếp lại các bản vá lỗi trong hàng đợi - sử dụng git rebase --interactive
(aka git rebase -i
) bằng cách sử dụng trình chỉnh sửa văn bản để sắp xếp lại hàng đợi.
bản vá lỗi đè bẹp - sử dụng git rebase -i
với chỉ thị bí
bản vá lỗi làm biến đổi hay vá cam messages - sử dụng git rebase -i
(tại chỗ một chủ đề?) Với các chỉnh sửa chỉ thị.
Bất kỳ hoạt động nào thay đổi bản vá theo bất kỳ cách nào (tức là nội dung, mô tả hoặc nguồn gốc) sẽ tạo một cam kết mới với id cam kết mới cho bản vá đó. Thực tế là các cam kết cũ có thể bị vứt bỏ và thay thế thường xuyên trước khi chúng được đẩy vào nhánh master ổn định là thứ duy nhất làm cho chúng trở thành 'hàng đợi vá' thay vì nhánh, nhưng đây là một quy ước dự án hơn là bất kỳ sự khác biệt vật lý nào trong dữ liệu tạo nên các cam kết. Để git chúng là đối tượng giống nhau.
Để quảng bá bản vá cho cam kết 'thực' chỉ cần di chuyển bản vá đến trước hàng đợi và hợp nhất nó vào nhánh chính. Sau khi di chuyển bản vá đến trước hàng đợi, nó chỉ giống như một cam kết bình thường dựa trên nhánh chính, vì vậy việc sáp nhập nó chỉ cần chuyển tiếp nhanh nhánh trỏ nhánh tới điểm cam kết vá.
Xuất bản cam kết này dưới dạng bản vá chính 'ổn định' là hành động cho biết: đây là cam kết sẽ không thay đổi và là một phần của lịch sử bất biến của dự án.
điều là chúng ta cần những thứ như vậy trong git vào một dịp rất hiếm. – shabunc