2012-05-11 28 views
13

Giả sử chúng ta có một nhánh phát triển 'A', và hai nhánh phụ 'B1' và 'B2', (cả hai được lấy từ A). Giả sử bạn chạy lệnh mã định dạng (trong trường hợp của chúng tôi là mã dọn dẹp của ReSharper) trên toàn bộ dự án trong B1 và ​​B2.Làm thế nào để thực hiện một hoạt động hợp nhất Git bỏ qua những thay đổi giống hệt nhau được thực hiện cho cả hai nhánh?

Bây giờ, khi chúng tôi cố gắng hợp nhất B2 thành B1, Git sẽ báo cáo xung đột trên tất cả các tệp trong dự án (số lượng khá lớn trong trường hợp của chúng tôi). Khi nhìn gần hơn ở mỗi xung đột, có vẻ như Git nghĩ rằng có một cuộc xung đột mặc dù sự thay đổi chính xác đã được thực hiện trong cả B1 và ​​B2 (?)

Có cách nào, trình điều khiển tùy chỉnh/thuộc tính git v.v ... Thao tác hợp nhất Git không báo cáo xung đột nếu các tệp trong B1 và ​​B2 giống hệt nhau?

Có lẽ tôi đã hiểu sai, có thể đó là vấn đề kết thúc dòng trắng/dòng (ví dụ: kết thúc dòng khác nhau trong B1 và ​​B2) trong trường hợp này tôi có thể tìm thấy giải pháp ở đây trên ngăn xếp tràn.

+1

bạn có thể kiểm tra xung đột bằng cách mở tệp trong trình chỉnh sửa, bạn sẽ có thể thấy lý do tại sao git thấy xung đột – CharlesB

+2

Công việc tái cấu trúc được thực hiện trong các ngành này bao nhiêu? Tôi không thể nói cho Git một cách cụ thể, nhưng nói chung, bạn chỉ làm điều này trong một nhánh, hợp nhất các thay đổi với phụ huynh, sau đó có nhánh thứ hai nhận lấy máy tái cấu trúc đó. – OrionRogue

+0

Bạn đã cố gắng sử dụng kdiff3 như mergetool trong git? Nó thường có thể xử lý những cuộc xung đột tầm thường này. – vhallac

Trả lời

1

Hôm qua tôi có vấn đề tương tự sau rất nhiều lựa chọn anh đào từ (và đến) một chi nhánh phụ nơi tôi sau khi hợp nhất với chi nhánh chính của tôi. Rất nhiều xung đột với sự thay đổi giống hệt nhau. Tôi đã giải quyết vấn đề này bằng chiến lược hợp nhất:

git checkout main-branch 
merge --no-commit -s recursive -X ours side-branch 

bạn có thể thay đổi "của chúng tôi" thành "của họ". Hãy cẩn thận vì tất cả các xung đột sẽ tự động được giải quyết chọn mục "của chúng tôi" hoặc "của chúng". Trong trường hợp của tôi, tôi đã có vài sự nhầm lẫn do điều này, và tôi đã sửa bằng tay. Bạn cũng có thể thử sử dụng một rebase (trong trường hợp của tôi nó không hoạt động tốt vì các nhánh quá khác nhau và tôi đã có một xung đột mới trong mỗi lần tương tác rebase mới). Xem: http://davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate-commits/

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