2012-02-12 39 views

Trả lời

9

Có một tính năng ít được biết đến của git được gọi là "Sử dụng lại độ phân giải đã ghi" hoặc định tuyến lại.

Bạn có thể bật tính năng này trên toàn cầu bằng cách chạy git config --global rerere.enabled 1.

Nếu định tuyến lại được bật, git sẽ tự động lưu các giải pháp xung đột và sẽ sử dụng lại các độ phân giải sau nếu nó gặp phải các xung đột tương tự. Điều này có kết quả ròng không yêu cầu người dùng phải giải quyết các xung đột đã nhìn thấy trước đó.

Tính năng được giải thích thêm trong a post on git-scm.com. Để biết thêm chi tiết, hãy xem help document for git rerere.

+5

Thật không may điều này sẽ chỉ giúp bạn nếu bạn đã bật tính năng này khi bạn thực hiện việc hợp nhất - bây giờ đã quá muộn. Có [một kịch bản gọi là rerere-train] (https://github.com/gitster/git/blob/master/contrib/rerere-train.sh) trong phần đóng góp của nguồn Git mà đi qua lịch sử hiện tại và làm cho rerere tìm hiểu các giải pháp xung đột từ các hợp nhất hiện có - giả sử nó hoạt động, điều đó sẽ giúp bạn trong trường hợp này. – Cascabel

1

Lưu ý: kể từ Kịch bản contrib/rerere-train.sh là nghĩa vụ phải đào tạo lại rerere (bạn có thể nhìn thấy một manual retraining here)

Để đảm bảo rerere quên tất cả độ phân giải rebase hiện tại của nó, bây giờ bạn có một tùy chọn chính thức với Git 2.14 /2.15 (Q3 2017) cho contrib/rerere-train: cờ --overwrite.

Xem commit ad53bf7 (26 Jul 2017) theo Raman Gupta (rocketraman).
(Merged bởi Junio C Hamano -- gitster -- trong commit aec68c3, 11 Aug 2017)

contrib/rerere-train: tùy chọn ghi đè lên độ phân giải hiện

Cung cấp cho người dùng một tùy chọn để ghi đè lên độ phân giải hiện có sử dụng một lá cờ --overwrite. Ví dụ:

Điều này có thể được sử dụng, nếu người dùng biết rằng họ đã có mục nhập trong bộ đệm ẩn của họ cho một xung đột, nhưng muốn thả nó và đào tạo lại dựa trên (các) cam kết hợp nhất được chuyển đến rerere- kịch bản đào tạo.

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