Cách tương tác (trực quan) giải quyết xung đột trong SourceTree / git


119

Tôi đang sử dụng (Windows) SourceTree cho dự án git của mình. Tôi có thể làm điều đó trong dấu nhắc lệnh hoặc thiết bị đầu cuối Linux.

Nhưng, tôi tự hỏi liệu có cách nào hay để giải quyết xung đột một cách tương tác và trực quan. Ví dụ: nếu pull phát hiện xung đột, hãy bật lên công cụ xung đột dựa trên GUI (ví dụ: P4Merge). Có khả thi không?

Tôi luôn giải quyết xung đột thủ công, điều này chỉ gây đau đớn.

Ví dụ: đây là một pulltin nhắn git , từ SourceTree.

git -c diff.mnemonicprefix=false -c core.quotepath=false pull --no-commit origin master
From W:\repo\
 * branch            master     -> FETCH_HEAD   

Updating 33c07bf..41e0249

error: Your local changes to the following files would be overwritten by merge:
    foo.cpp
    goo.cpp
    goo.hpp
Please, commit your changes or stash them before you can merge.
Aborting    

Completed with errors, see above.

Câu trả lời:


135

Từ SourceTree, nhấp vào Công cụ-> Tùy chọn. Sau đó, trên tab "Chung", hãy nhớ chọn hộp để cho phép SourceTree sửa đổi tệp cấu hình Git của bạn.

Sau đó chuyển sang tab "Diff". Ở nửa dưới, sử dụng menu thả xuống để chọn chương trình bên ngoài mà bạn muốn sử dụng để thực hiện khác biệt và hợp nhất. Tôi đã cài đặt KDiff3 và rất thích. Khi bạn hoàn tất, hãy nhấp vào OK.

Bây giờ khi có sự hợp nhất, bạn có thể đi trong Hành động-> Giải quyết Xung đột-> Khởi chạy Công cụ Hợp nhất Bên ngoài.


4
Tôi đã thử điều này, nhưng cuối cùng, tôi không thấy vượt quá so sánh được khởi chạy. Tôi thấy các tệp so sánh đang được tạo, nhưng đó là nó. Tôi không thể giải quyết xung đột. Thay đổi điều này thành so sánh tiêu chuẩn / mặc định dường như cũng không giúp được gì.
Echiban

1
@echiban Có thể bạn có giấy phép tiêu chuẩn cho Beyond Compare không chấp nhận hợp nhất 3 cách. Bạn cần phải đi pro để sử dụng nó như một mergetool git
pierdevara

6
Sau khi làm theo tất cả các bước để cấu hình "Launch Merge External Tool" vẫn còn mờ đối với tôi, không có cách nào để kích hoạt nó
pal4life

2
Ngoài ra tôi đã không chọn các tập tin xung đột hợp nhất, một khi tôi đã làm điều đó nó đã đi mỹ
pal4life

2
Tôi phải nhấp vào mục "Thay đổi không giới hạn" trong danh sách cam kết trước khi nó chuyển sang màu xám.
Micah Zoltu

11

Tôi đang sử dụng SourceTree cùng với TortoiseMerge / Diff, đây là công cụ khác biệt / hợp nhất rất dễ dàng và thuận tiện.

Nếu bạn cũng muốn sử dụng nó, hãy:

  1. Tải phiên bản độc lập của TortoiseMerge / Diff (khá cũ, vì nó không xuất hiện độc lập kể từ phiên bản 1.6.7 của TortosieSVN, kể từ tháng 7 năm 2011). Liên kết và chi tiết trong câu trả lời này .

  2. Giải nén TortoiseIDiff.exeTortoiseMerge.exevào bất kỳ thư mục nào ( c:\Program Files (x86)\Atlassian\SourceTree\extras\trong trường hợp của tôi).

  3. Trong SourceTree mở Tools > Options > Diff > External Diff / Merge. Chọn TortoiseMergetrong cả hai danh sách thả xuống.

  4. Nhấn OKvà trỏ SourceTree đến vị trí của bạn TortoiseIDiff.exeTortoiseMerge.exe.

Sau đó, bạn có thể chọn Resolve Conflicts > Launch External Merge Tooltừ menu ngữ cảnh trên từng tệp xung đột trong kho lưu trữ cục bộ của mình. Điều này sẽ mở ra TortoiseMerge, nơi bạn có thể dễ dàng giải quyết tất cả các xung đột, bạn có. Sau khi hoàn tất, chỉ cần đóng TortoiseMerge (bạn thậm chí không cần lưu thay đổi, điều này có thể sẽ được thực hiện tự động) và sau vài giây SourceTree sẽ xử lý điều đó một cách duyên dáng.

Vấn đề duy nhất là nó tự động tạo bản sao lưu, mặc dù tùy chọn thích hợp không được chọn .


4

Khi Menu Giải quyết Xung đột-> Nội dung bị tắt, một menu có thể nằm trong danh sách Tệp đang chờ xử lý. Chúng tôi cần chọn tùy chọn tệp xung đột từ trình đơn thả xuống (trên cùng)

hy vọng nó giúp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.