Công cụ hợp nhất ba chiều tốt nhất là gì? [đóng cửa]


272

Subversion, Git, Mercurial và những người khác hỗ trợ hợp nhất ba chiều (kết hợp giữa tôi, của họ và sửa đổi "cơ sở") và hỗ trợ các công cụ đồ họa để giải quyết xung đột.

Bạn sử dụng công cụ gì? Windows, Mac OS X, Linux, miễn phí hoặc thương mại, bạn đặt tên cho nó.

Đây là một vài điều mà tôi đã sử dụng hoặc nghe nói, chỉ để bắt đầu cuộc trò chuyện:

(Tôi nhận ra rằng đây là loại giống như các công cụ Diff xuất sắc nhất , nhưng nó khác nhau ở chỗ tôi một cách rõ ràng tập trung vào các công cụ hợp nhất ba chiều; WinMerge . Là ra khỏi danh sách, ví dụ)



4
Trên thực tế WinMerge có so sánh 3 cách bằng cách sử dụng nó với các công cụ VCS, bạn chỉ cần truyền 3 tệp (trái, phải, kết quả) làm đối số cho dòng lệnh và nó thực hiện công việc.
Zilvinas

3
Thật khó để nói đâu là công cụ hợp nhất tốt nhất, bởi vì nó phụ thuộc vào các yếu tố chủ quan. Nhưng nếu bạn đang tìm kiếm một tính năng đánh dấu sự khác biệt, hãy thử semanticmerge.com
Daniel Peñalba

28
Làm thế nào câu hỏi này có thể được đóng lại là không xây dựng? Nó có 182 upvote, 123 sao và 11 câu trả lời, rõ ràng nhiều người nghĩ rằng nó mang tính xây dựng.
HelloGoodbye

3
@Shuklaswag Điều đó liên quan đến câu hỏi của tôi như thế nào? Tôi tự hỏi tại sao nó được đóng lại là "không mang tính xây dựng".
HelloGoodbye

Câu trả lời:


167

Mã nguồn mở KDiff3 , đa nền tảng

Giao diện tương tự cho Linux và Windows, thuật toán rất thông minh để giải quyết xung đột, biểu thức chính quy để tự động giải quyết xung đột, tích hợp với ClearCase, SVN, Git, MS Visual Studio, tệp được hợp nhất có thể chỉnh sửa, so sánh các thư mục

Điều hướng bàn phím của nó rất tuyệt: ctrl-mũi tên để điều hướng diffs, ctrl-1, 2, 3 để thực hiện việc hợp nhất.

Ngoài ra, hãy xem https://stackoverflow.com/a/2434482/42473

nhập mô tả hình ảnh ở đây


10
Ưu điểm khác của KDiff3: cùng giao diện với Linux và Windows, thuật toán rất thông minh để giải quyết xung đột, biểu thức chính quy để tự động giải quyết xung đột, tích hợp với ClearCase, SVN và Git, tệp được hợp nhất có thể chỉnh sửa, so sánh các thư mục.
Neves

3
@ThomasS Điều đó không đúng, hãy xem câu trả lời kháckdiff3 để biết ví dụ. kdiff3sẽ hạnh phúc khác biệt và hợp nhất toàn bộ cây thư mục và đã thực hiện trong nhiều năm! Một số công cụ (chẳng hạn như git) chỉ có thể khởi chạy nó trên mỗi tệp, nhưng các công cụ khác (chẳng hạn như đồng bóng) sẽ vui vẻ cho phép bạn phân phối toàn bộ kho lưu trữ ba chiều.
Đánh dấu gian hàng

2
KDiff3 là khủng khiếp khi thay đổi cục bộ và các thay đổi khác về số lượng dòng được thêm vào; nếu cục bộ bạn thêm dòng A, B và C, nhưng thay đổi khác chỉ thêm A và C, thì KDiff3 tìm ra rằng A đã được thêm vào, sau đó tìm thấy B xung đột với C, sau đó thêm C.
Neil

3
Có ai có ý kiến ​​về câu trả lời này trong năm 2016 không?
Shadoninja

4
Nó không được hỗ trợ kể từ 2014
Ruslan K.

106

Chỉ cần kiểm tra P4merge kể từ khi tôi nghe về nó trong một bài viết trên blog khác:

nhập mô tả hình ảnh ở đây

Giao diện rất bóng bẩy, và MIỄN PHÍ! Tôi đã từng là một người dùng Araxis Merge trung thành, nhưng xem xét điều này là miễn phí và tuyệt vời, tôi khuyến khích bạn nên kiểm tra nó.


11
Nó có sẵn cho Windows, Mac, Linux, FreeBSD và Solaris 10
Grant Limberg

36
@Art: tất nhiên bạn có thể chỉnh sửa kết quả hợp nhất trong P4Merge. Tôi làm nó suốt!
Sklivvz

9
p4merge cũng không "miễn phí" cho doanh nghiệp. Giấy phép được giới hạn cho sử dụng thương mại.
DH4

21
@ DH4 Tôi vừa nhận được E-Mail từ bộ phận hỗ trợ chính thức của Perforce và P4Merge miễn phí cho mục đích thương mại (Tôi làm việc cho MS, nó không nhận được nhiều doanh nghiệp hơn thế;))
Ohad Schneider

4
Không hỗ trợ so sánh thư mục trong P4merge. Nó sẽ là một bổ sung thực sự tuyệt vời cho P4Merge.
RuntimeException

95

Beyond So sánh 3 Pro hỗ trợ hợp nhất ba chiều và nó là một công cụ hợp nhất khá ấn tượng. Đó là thương mại (nhưng đáng giá, IMHO) và có sẵn trên Windows, Linux và Mac OS X.

Như đã chỉ ra trong một bình luận, nó cũng không tốn kém.

Nhập mô tả hình ảnh ở đây

Lưu ý: Nếu một người không có bộ hợp nhất, nghĩa là, cư dân đánh dấu hợp nhất trong tệp đích, Beyond So sánh không cung cấp so sánh / chỉnh sửa tệp ba chiều. Beyond So sánh nói rằng tính năng này nằm trong danh sách của họ .

Lưu ý: Hợp nhất 3 chiều là một tính năng trong phiên bản Pro của Beyond So sánh 3


16
+1 Beyond So sánh dễ dàng đáng giá, đặc biệt là khi bạn xem đó là các tính năng khác.
jamiei

2
Tốt, nhưng không hỗ trợ cho việc chọn thư mục
Michael Fitzpatrick

9
Michael, tôi không chắc ý của bạn là gì. Beyond So sánh có hỗ trợ tuyệt vời cho các thư mục khác nhau: scootersoftware.com/moreinfo.php .
Bruce Christensen

4
Nó được chỉ định rõ ràng trên trang web của họ - câu trả lời được cập nhật cho phiên bản Pro là yêu cầu hợp nhất 3 chiều
Joshua McKinnon

2
Ngoài So sánh 4 Pro đã thêm hỗ trợ Hợp nhất thư mục.
Chris Kennedy

75

Trình xem Meld Diff

Tôi chỉ có kinh nghiệm tốt khi làm việc với Meld. Tôi sử dụng nó khi tôi phải thực hiện hợp nhất mã lộn xộn giữa các chi nhánh. Nó là đơn giản để sử dụng và có một giao diện sạch sẽ.

  • Mã nguồn mở
  • Hỗ trợ Linux, Windows và MacOS
  • Nhiều tập tin khác nhau
  • Hỗ trợ so sánh ba chiều

Trong Ubuntu, cài đặt đơn giản như: sudo apt-get install meld

nhập mô tả hình ảnh ở đây


3
+1 Meld là phần mềm trơn, sạch, "vừa đủ".
Trevor Bramble

15
Meld là thiếu sót và manh mối hình ảnh của nó là sai lệch.
aib

6
Meld thậm chí không làm việc với git chính xác.
slikts

65
Thật không may, Meld KHÔNG phải là công cụ hợp nhất ba chiều (ngay cả khi họ nêu nó trên trang chủ). Để hợp nhất ba chiều, bạn cần BỐN cửa sổ (tệp cơ sở). Nhưng tôi yêu meld, làm việc tuyệt vời.
lzap

8
@lzap, thực ra meld ba chiều, nhưng nó không có giấy tờ và cách đây một tháng, tôi nhận thấy họ đã loại bỏ hoàn toàn hợp nhất 3 chiều: is.gd/prKX5d Nếu bạn vẫn sử dụng phiên bản đủ cũ, bạn vẫn ở may mắn mặc dù.
Magnus

45

vimdiff. Thật tuyệt vời. Tất cả bạn cần là một cửa sổ rộng ba feet.

nhập mô tả hình ảnh ở đây


11
Mất một thời gian để nhận ra rằng bạn có thể thực hiện "gvimdiff -O Branch1.txt base.txt Branch2.txt merge.txt" và sử dụng ctrl + w J để di chuyển bộ đệm hợp nhất xuống dưới cùng của màn hình. Đây có phải là cách bạn sử dụng nó?
Wim Coenen

Khá nhiều, ngoại trừ tôi sử dụng vim, không phải gvim.
Paul Beckingham

7
downvote, nó không thực sự giải quyết xung đột, nó chỉ khác.
piotr

3
vimdiff hiện có xử lý git tốt cho việc hợp nhất 3 chiều (tức là 4 panes) - vim.wikia.com/wiki/iêu
Sonia Hamilton

8
@piotr vimdiff thực sự giải quyết xung đột. Bạn sử dụng lệnh "diffg <bufferNum>" để xây dựng tệp được hợp nhất trong khung bên dưới. Cửa sổ hợp nhất mông là bộ đệm 1, các ngăn khác là 2,3,4 trên đầu trang. Để nhảy sang diffs sử dụng [c và] c. Đây là ngoài chức năng hộp trên debian wheezy 7.7.
ikky

37

Nguồn Gear Diff Hợp nhất :

Đa nền tảng, hợp nhất ba chiều thực sự và nó hoàn toàn miễn phí cho sử dụng thương mại hoặc cá nhân.

nhập mô tả hình ảnh ở đây


1
Tôi đã sử dụng DiffMerge trong nhiều năm và thích nó. Tuy nhiên, tôi đã đọc bài đăng trên blog này , nơi tác giả đang xem các công cụ hợp nhất và đưa danh sách xuống DiffMerge và P4Merge. Cuối cùng anh ta đã đi với P4Merge vì nó có giao diện đẹp hơn. Tôi mới bắt đầu sử dụng P4Merge hôm nay và tôi sẽ phải đồng ý. Cụ thể, DiffMerge không hiển thị các thay đổi tốt - nó hiển thị chúng dưới dạng xóa và chèn. Điều này có thể gây nhầm lẫn nếu có nhiều thay đổi gần nhau. P4Merge hiển thị nó tốt hơn.
Simon Tewsi

1
Tôi thấy rằng khuếch tán không miễn phí , nó có giá $ 19
erkfel

3
@erkfel, Điều đó không chính xác. Đăng ký là tùy chọn và phần mềm được sử dụng miễn phí: "SourceGear DiffMerge là một công cụ tìm kiếm và hợp nhất tệp đã giành giải thưởng đã giúp các nhà phát triển và người có sở thích chuyên nghiệp kể từ năm 2007. SourceGear DiffMerge được cấp phép sử dụng miễn phí. Tuy nhiên, bằng cách đăng ký DiffMerge bạn sẽ giúp tài trợ cho việc phát triển, bảo trì và hỗ trợ sản phẩm mới. Để cảm ơn người dùng đã đăng ký và khuyến khích đăng ký bổ sung, chúng tôi đã thêm một số tính năng mới trong 4.2 ... "(trong văn bản chương trình)
Muhd

1
Một điều tôi thấy hữu ích trong DiffMerge, so với P4Merge (mà bây giờ tôi sử dụng để khuếch tán và hợp nhất trong git), là nó tích hợp với Windows File Explorer. Cụ thể, tôi có thể nhớ một tệp trong một thư mục, sau đó so sánh tệp đã nhớ với một tệp khác trong một thư mục khác. Tôi thấy điều này hữu ích có thể một hoặc hai lần một tháng, trong đó tôi không phải di chuyển hai tệp vào cùng một thư mục để so sánh chúng (ví dụ: tập lệnh SQL không được kiểm soát nguồn).
Simon Tewsi

1
@SimonTewsi: P4Merge cho Mac không yêu cầu các tệp phải nằm trong cùng một thư mục. Nó cho phép bạn duyệt hệ thống tệp và chọn các tệp cơ sở, thứ nhất và thứ hai từ bất kỳ đâu trên máy tính.
Steve Samuels

32

Hợp nhất Araxis . Nó là thương mại, nhưng nó rất đáng giá ... Nó có sẵn cho Windows và Mac OS X.

Nhập mô tả hình ảnh ở đây


5
Đồng ý, đó là thứ tốt nhất tôi từng sử dụng.
Dan Olson

1
Quan sát của tôi: Nó tương đối chậm khi xử lý các tệp lớn khoảng 5MB.
Naga Kiran

3
+1 cho Araxis. Một trong số ít các công cụ tôi sẵn sàng trả tiền tốt để sử dụng cá nhân. Mọi thứ khác đều lộn xộn, khó hiểu và nhợt nhạt khi so sánh (ý định chơi chữ).
Dan Esparza

8
Sau khi sử dụng Araxis trong một thời gian dài, công ty của tôi đã chuyển sang KDiff3 vì những lý do sau: (1) Khi hủy hợp nhất trong Araxis, tệp vẫn được đánh dấu là đã được giải quyết trong TortoiseHg. (2) Araxis hiển thị hỗn hợp sửa đổi cơ sở & kết quả hợp nhất trong ngăn "Kết quả hợp nhất" thường gây nhầm lẫn. (3) Từ TortoiseHg KDiff3 sẽ tự động hợp nhất mà không cần tương tác của người dùng nếu có thể làm như vậy. (4) Thuật toán hợp nhất của KDiff3 dường như làm một công việc tốt hơn. Tuy nhiên, chúng tôi vẫn sử dụng Araxis làm công cụ so sánh của mình :)
Michael Platings

2
Như đã đề cập trong các nhận xét cho các câu trả lời khác, một công cụ hợp nhất 3 chiều phù hợp có 4 bảng - cơ sở, cục bộ, từ xa và kết quả . Araxis kết hợp cơ sở và kết quả, có thể dẫn đến các vấn đề.
neonblitzer

27

Thuật toán giải quyết xung đột Kdiff3 thực sự ấn tượng.

Ngay cả khi lật đổ chỉ ra xung đột, Kdiff3 sẽ tự động giải quyết nó. Có phiên bản cho Windows và Linux với cùng giao diện. Có thể tích hợp nó với Rùa và với vỏ linux của bạn.

Nó nằm trong danh sách các phần mềm nguồn mở yêu thích của tôi. Một trong những công cụ đầu tiên tôi cài đặt trong bất kỳ máy nào.

Bạn có thể định cấu hình nó làm công cụ tìm khác biệt mặc định trong Subversion, Git, Mercurial và ClearCase. Nó cũng giải quyết gần như tất cả các xung đột ClearCase. Trong Windows, nó có một tích hợp tốt với windows explorer: chọn hai tệp và nhấp chuột phải để so sánh chúng hoặc nhấp chuột phải để 'lưu vào sau' một tệp, sau đó chọn một tệp khác để so sánh.

Các tập tin hợp nhất có thể chỉnh sửa. Có phím tắt trơn.

Bạn cũng có thể sử dụng nó so sánh và hợp nhất các thư mục. Xem: Kdiff3 So sánh các thư mục

Một tính năng nâng cao là sử dụng các biểu thức thông thường để xác định hợp nhất tự động.

Khó chịu duy nhất của tôi là hơi khó biên dịch nếu nó không có trong kho distro yêu thích của bạn.


3
Tôi đồng ý về thuật toán hợp nhất. Nó tinh vi đến khó tin, và dường như kỳ lạ là "biết" những gì bạn muốn làm theo cách mà các công cụ khác không thể. Nó thường xuyên nghiền nát diff3 và Subversion (blarg), và thậm chí có thể hữu ích với sự hợp nhất Git.
kevinarpe

các phím tắt để goto tiếp theo ở đâu và chọn a / b / c?
chúa tể

@mylord: sử dụng độ trễ Tự động nâng cao nhỏ và các phím tắt Ctrl-1/2/3 để chọn A / B / C cho nhiều xung đột.
Neves

Có gì thay thế KDiff3 cho bạn? Người dùng lớn của nó, nhưng tôi thấy mình có thể thay thế tốt hơn những ngày này
chrispepper1989

1
@ chrispepper1989, tôi vẫn sử dụng KDiff3 trong Git ngày hôm nay. Tôi chưa bao giờ tìm thấy một ứng dụng hợp nhất 3 cách tốt hơn đáng kể so với KDiff3. P4Merge có giao diện hiện đại hơn, nhưng khi tôi kiểm tra nó, bạn không thể chỉnh sửa tệp đã hợp nhất (tôi nghĩ bạn có thể làm điều đó ngay bây giờ).
Neves

13

Tôi yêu Ediff . Nó được tích hợp sẵn với GNU Emacs .

Để thực hiện khác biệt ba chiều, sử dụng ediff-files3(để chọn ba tệp) hoặc ediff-buffer3(để chọn ba bộ đệm đã mở). Bạn sẽ có một màn hình trông như thế này:

khác biệt ba chiều trong emacs

Lưu ý sự khác biệt từ ngữ.

Bạn có thể nhấn nhoặc pđi đến diffs tiếp theo / trước, trong khi absẽ sao chép vùng đệm từ một (một trong những tận cùng bên trái) để đệm b (một trong những trung), và tương tự cho các kết hợp hai chữ cái khác a, b, c; rbsẽ khôi phục lại vùng trong bộ đệm b. Nhấn ?để có một menu trợ giúp nhanh hoặc đọc hướng dẫn tốt về việc hợp nhất diff3 trong Emacs .


6
Tôi yêu thích ediff, tôi chỉ thấy hai bộ đệm ở trên ... hợp nhất 3 chiều được cho là có 3 hoặc 4 cửa sổ: ba cửa sổ được hợp nhất (cục bộ, từ xa và cơ sở tổ tiên chung của chúng) và đầu ra hợp nhất cuối cùng . Có không có vẻ là một kết hợp 3 chiều trong ediff (gọi ediff-merge-with-ancestor) nhưng tôi không chắc chắn nếu nó có 3 tấm hoặc 4, và cũng là ảnh chụp màn hình ở trên không phản ánh điều đó.
ShreevatsaR

Đã chỉnh sửa để hiển thị diff ba chiều @ShreevatsaR
unhammer

@unhammer Cảm ơn điều này tốt hơn, nhưng nó vẫn chỉ hiển thị 3 cửa sổ nên không rõ ràng đó là một khác biệt 3 chiều thực sự (sẽ có 4 cửa sổ; xem kdiff3 và các ví dụ khác). Nếu những gì hiển thị trong ảnh chụp màn hình là ba thứ được hợp nhất, thì đầu ra ở đâu?
ShreevatsaR

Bạn sửa đổi triệt để một (hoặc nhiều hơn!) Bộ đệm. Đó là lý do tại sao tôi đã đề cập rằng absẽ sao chép vùng từ bộ đệm a sang bộ đệm b. Tôi không nghĩ đã có phiên bản bốn cửa sổ ediff. (Tôi biết emergesử dụng bộ đệm đầu ra chuyên dụng thay thế, nhưng emerge-files-with-ancestorkhông hiển thị tổ tiên, chỉ sử dụng nó để đoán phiên bản chính xác bằng cách xem cái nào đồng ý với tổ tiên.)
unhammer

11

Ultracompare . Nó thực sự tốt, xử lý tốt các tệp lớn (hơn 1 GB), có sẵn cho Windows / Mac / Linux, và nó mang tính thương mại, nhưng nó đáng giá.

Ảnh chụp màn hình của UltraCompare Professional trên Windows


Tôi không biết cách đặt nó để hỗ trợ hợp nhất 3 chiều ... Nó có thể hiển thị một tệp cơ sở ở giữa không, 2 tệp đã thay đổi ở bên trái và bên phải, vì vậy tôi có thể thấy những gì được thay đổi trong cả hai tệp dựa trên cơ sở tập tin và có kết quả hợp nhất của 2 tập tin thay đổi ở dưới cùng? Tôi đang sử dụng UltraCompare 17.0
Ricky

1
Một chút googling đã tìm thấy ultraedit.com/support/tutorials-power-tips/ultracompare/ mẹo - nói về việc hợp nhất 3 cách trong bước 6 hợp nhất nâng cao.
MrTelly

11

Diffuse là một công cụ hợp nhất ba cách dễ sử dụng. Nó hỗ trợ tất cả các nền tảng và hệ thống kiểm soát phiên bản mà bạn đã đề cập và có thể so sánh nhiều hơn ba tệp cùng một lúc.

nhập mô tả hình ảnh ở đây


2
Và nó thậm chí còn hỗ trợ so sánh các tệp N cùng một lúc! Điều này rất hữu ích nếu bạn cần so sánh các tệp cấu hình từ nhiều ứng dụng đồng nhất.
Pius Raeder

Tôi sử dụng Diffuse cho hơn ba tập tin so sánh của mình
mohas


4

Tóm tắt là tôi thấy ECMerge là một sản phẩm thương mại tuyệt vời. http://www.elliecomputing.com/products/merge_overview.asp

nhập mô tả hình ảnh ở đây

Tôi cũng đồng ý với MrTelly rằng Ultracompare rất tốt. Một tính năng hay là nó sẽ so sánh các tài liệu RTF và Word, rất tiện lợi khi bạn kết thúc việc lập trình bằng lời với những người bán hàng và họ không quản lý tài liệu của họ một cách chính xác.


Liên kết đầu tiên không hoạt động, nó trả về 500 lỗi. Nếu tài nguyên đã được di chuyển, vui lòng điều chỉnh url.
Serge P. hay còn gọi là azure

@ SergeyP.akaazure - xin lỗi về điều đó. Blog của tôi không còn tồn tại - Tôi đã xóa liên kết ..
Steve Midgley
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.