2010-10-06 27 views
5

Tôi muốn buộc git phải luôn luôn hợp nhất bằng cách sử dụng độ phân giải xung đột 3 chiều. Hơn nữa, tôi muốn làm điều đó đến mức có thể chọn một dòng.Hợp nhất các dòng chọn lọc mã bằng Git?

Hiện tại tôi đang hợp nhất hai chi nhánh. Tuy nhiên, nếu có thể, tôi muốn biết cách thực hiện nhiệm vụ này ngay cả khi hợp nhất nhiều nhánh.

Trả lời

2

Git cố gắng thực hiện hợp nhất 3 chiều theo mặc định (chiến lược recursive cho 2 người đứng đầu và chiến lược octopus cho hơn 3 người đứng đầu).

Nếu bạn muốn xem Tùy chọn độ phân giải 3 chiều khi hợp nhất thủ công, hãy thử đặt tùy chọn cấu hình merge.conflictstyle thành diff3.

(Xem phần Cấu hình của git-merge man page biết chi tiết về tùy chọn đó.)

0

Các bài viết trên blog "Five advanced Git merge techniques" không đưa ra thậm chí thêm chi tiết về các thiết lập diff3:

xung đột Bật diff3 sử dụng git config --global merge.conflictstyle diff3.
Phong cách xung đột diff3 thêm một phần phụ giữa ||||||| marker mới và ======= đánh dấu, mà chỉ ra:

  • các nội dung ban đầu của phần này,
  • với những thay đổi của bạn ở trên và
  • của họ (các chi nhánh đang được hợp nhất trong) các thay đổi bên dưới.

Mặc dù không có một công cụ diff, lệnh git show có thể giúp:

Khi bạn đang ở trong một hợp nhất, bạn có thể sử dụng một :N: cú pháp đặc biệt, nơi N là một con số, để tự động chọn một trong những cha mẹ hợp nhất.

  • 1 chọn cơ sở chung cam kết (phiên bản thấp hơn),
  • 2 chọn phiên bản của bạn ("mine"), và
  • 3 chọn phiên bản của họ (các phiên bản cao hơn).

Vì vậy, git show :3:foobar.txt hiển thị phiên bản thượng lưu của foobar.txt.

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