2012-02-09 41 views
54

Khi có xung đột hợp nhất trong Git, rác như sau được chèn vào các tệp xung đột. Ba câu hỏi:Hợp nhất giải quyết xung đột

  1. Bạn đọc các chú thích này bằng cách nào?
  2. Một số chiến lược để sử dụng khi sửa các xung đột hợp nhất này là gì?
  3. Có công cụ GUI cho Mac biết cách đọc các tệp này và hiển thị hai phiên bản song song để giúp khắc phục sự cố dễ dàng hơn không?

enter image description here

Lưu ý: Trong trường hợp nó có liên quan, tôi sử dụng Mac GUI client GitHub của.

+1

thể trùng lặp của [Làm thế nào để sửa chữa kết hợp mâu thuẫn trong Git?] (Http://stackoverflow.com/questions/161813/how-do-i-fix-merge-conflicts-in-git) - # 1 liên kết nếu bạn google "git merge conflicts" –

Trả lời

20

Hiện tại có giải pháp tốt hơn là cố gắng đọc các điểm đánh dấu vô nghĩa mà Git chèn vào tệp của bạn. Kaleidoscope 2, bản phát hành thứ hai của Black Pixel về công cụ tìm khác biệt của họ, giờ đây cũng là một công cụ hợp nhất. Nó không miễn phí, nhưng nó hoạt động rất đẹp.

Sau khi bạn cài đặt Kaleidoscope 2, nó thực sự đơn giản để tích hợp với Git.Mở Kaleidoscope và từ Menu Bar chọn Kaleidoscope>Integration ...

Kaleidoscope's Integration menu option.

Sau đó, bạn sẽ thấy cửa sổ này. Chỉ cần chọn Git từ điều hướng bên trái và sau đó cài đặt công cụ dòng lệnh ksdiff và sau đó làm công cụ khác biệt và hợp nhất mặc định của Kaleidoscope Git.

Kaleidoscope's Git Integration dialog.

Cuối cùng, khi bạn có một cuộc xung đột nhập trong Git, chỉ cần đi tới dòng lệnh và thực hiện git mergetool. Bây giờ cuộc xung đột dễ đọc. Thưởng thức.

Kaleidoscope sane view for merge conflicts.

+2

Tôi tự hỏi làm thế nào để đánh dấu giải quyết thông qua Kaleidoscope –

+1

@FrankFang bạn chỉ cần đóng cửa sổ khi bạn tất cả các xung đột đã được giải quyết. Bạn sẽ được hỏi sau đó nếu hợp nhất là ok. –

34

Tất cả mọi thứ giữa <<<<<<====== xuất phát từ HEAD sửa đổi, đó là trạng thái đã cam kết trước khi bắt đầu hoạt động hợp nhất (git merge sẽ phàn nàn nếu cây bị bẩn, vì vậy nó phải tương đương với thư mục làm việc của bạn).

Các bộ phận giữa ======>>>>>> xuất phát từ phiên bản đang được hợp nhất. Văn bản sau >>>>>> là nhận xét về cam kết đã giới thiệu thay đổi xung đột.

Có điểm đánh dấu xung đột có nghĩa là phiên bản cơ sở của phần này của tệp khác với phiên bản "mới". Phiên bản cơ sở (tổ tiên chung cuối cùng) không được hiển thị.

Nếu bạn muốn kết hợp thoải mái hơn và có sẵn GUI, tôi khuyên bạn nên xem kdiff3.

+0

Cảm ơn, Simon. Có một số ứng dụng GUI có thể mở các tệp này và hiển thị HEAD và phiên bản được hợp nhất cạnh nhau không? –

+0

Theo liên kết được đề xuất bởi @Brian ở trên .... –

+0

Bạn có thể chỉ cho tôi thông tin nào trong liên kết đó hữu ích không? Hướng dẫn sử dụng git là không thể tiếp cận với tôi. –

16
<<<< HEAD #Where the conflict starts 

#Previous Revision 

========== # The point where things look iffy 

#Things that changed 

>>>>> New Commit # Point where the conflict ends 

Xcode của Mac đi kèm với FileMerge có thể truy cập trên dòng lệnh với opendiff.

git mergetool -t opendiff

+2

Điều đó có nghĩa là gì nếu không có gì cho # Điều đã thay đổi, nhưng tôi vẫn có xung đột? – Ken

+0

git mergetool -t opendiff là câu trả lời cho tôi. Cảm ơn. – Billy

4

Bạn có thể cấu hình một (đồ họa) công cụ kết hợp và sử dụng công cụ để thực hiện giải quyết xung đột.

Cũng có một cái nhìn tại các lệnh git mergetool - nếu bạn có một trong những công cụ được xác định trước được cài đặt hoặc đã cấu hình một số công cụ khác, nó sẽ mở ra công cụ để giải quyết http://schacon.github.com/git/git-mergetool.html

Nếu bạn quan tâm trong GUI các công cụ, bạn không cần phải lo lắng về những gì các ký hiệu thực sự có ý nghĩa, vì công cụ GUI sẽ giúp bạn dễ dàng thực hiện các độ phân giải. Chỉ cần hiểu rằng các phần được đánh dấu bằng =====>>>>> là các phần xung đột.

+1

Bạn có thể cho tôi ví dụ về ứng dụng Mac GUI có thể đọc các tệp này và giải thích cách mở chúng không? Tôi đã thử mở các tệp này bằng các công cụ khác biệt và hợp nhất khác nhau và chúng chỉ mở dưới dạng tệp văn bản duy nhất thay vì được diễn giải dưới dạng hai tệp. (Đó là toàn bộ mục đích của các điểm đánh dấu xung đột.) –

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