Công cụ hợp nhất trực quan nào cho Git? [đóng cửa]


599

Công cụ tốt nhất để xem và chỉnh sửa hợp nhất trong Git là gì? Tôi muốn có chế độ xem hợp nhất 3 chiều, với "của tôi", "của họ" và "tổ tiên" trong các bảng riêng biệt và bảng "đầu ra" thứ tư.

Ngoài ra, hướng dẫn để gọi công cụ nói sẽ là tuyệt vời. (Tôi vẫn chưa tìm ra cách khởi động kdiff3 theo cách mà nó không gây ra lỗi cho tôi.)

Hệ điều hành của tôi là Ubuntu.


15
"Nhưng bây giờ nó không được phép" yeah, đó là lý do tại sao tôi ghét stackoverflow ngày nay. Đó là cách quá khô khan và nhàm chán mà không có những câu hỏi.
István Ujj-Mészáros

17
Có một trang web stackexchange nơi loại câu hỏi này được cho phép? Nếu không, nên có ..
fzzylogic

16
Có vẻ như đã đến lúc cho một Stack Overflow mới, nơi những câu hỏi như vậy được cho phép. Rõ ràng như nhiều câu hỏi đã nêu rất có giá trị đối với nhiều người đến nỗi thật ngu ngốc khi đóng chúng lại. Tôi nghĩ rằng bạn đã đi qua hội đồng quản trị với quan liêu. Làm thế nào về việc bạn thực hiện một cuộc thăm dò về vấn đề này và xem "khách hàng" của bạn muốn gì; P
Piotr Owsiak


6
Vấn đề: softwarerecs là vô dụng vì các chuyên gia ở đây, không phải ở đó.
Revierpost

Câu trả lời:


337

Meld là một công cụ tìm kiếm / hợp nhất miễn phí, mã nguồn mở và đa nền tảng (UNIX / Linux, OSX, Windows).

Đây là cách cài đặt nó trên:


53
Ai quan tâm đến HĐH mà tác giả ban đầu đang sử dụng?, câu hỏi đủ chung chung để mọi người tìm kiếm nó quan tâm. Và khác biệt 3 chiều là khi bạn thực sự nhìn thấy 4 tấm có kiểm tra; hợp nhất-cơ sở / địa phương / từ xa / kết quả
Evgeny

16
meldtẻ nhạt với các khác biệt phức tạp, có thể chọn các tùy chọn như thế chose b for all unresolved conflictstốt hơn nhiều so với việc phải bấm thủ công vào mũi tên chính xác cho mỗi hunk in meld. Ngoài ra, việc có thể hợp nhất vào một tệp đầu ra cụ thể thay vì chỉnh sửa các tệp đầu vào tại chỗ là vô giá để sao lưu các lỗi không thành công.
Đánh dấu gian hàng

3
@naxa Meld hiện có trình cài đặt Windows: code.google.com/p/meld-installer
Roman

6
kdiff3 cho phép bạn xem 4 lượt xem, meld chỉ cho phép 3 lượt xem. Meld không phải là một công cụ hợp nhất thực sự, nó là một công cụ khác vì nó không hiển thị chế độ xem phiên bản cơ sở.
Akira Yamamoto

4
Meld là khủng khiếp, đặc biệt là cho sự hợp nhất. Nó không có tùy chọn để "tự động chuyển các thay đổi không xung đột", khiến mọi sự hợp nhất trở nên đau đớn khủng khiếp.
Cerin

91

Bạn có thể định cấu hình công cụ hợp nhất của riêng mình để sử dụng với " git mergetool".

Thí dụ:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

Và trong khi bạn đang ở đó, bạn cũng có thể thiết lập nó làm Difftool cho " git difftool":

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'

Lưu ý rằng trong Unix / Linux, bạn không muốn $BASEphân tích cú pháp dưới dạng biến của trình bao - nó thực sự sẽ xuất hiện trong tệp ~ / .gitconfig để điều này hoạt động.


10
Lưu ý rằng vì p4merge là (bây giờ) là một trong những công cụ hợp nhất git được hỗ trợ chính thức, nên không cần thiết phải sử dụng công cụ này. .cmd biến nữa.
Matt Ball

2
Đảm bảo bạn đang sử dụng báo giá chính xác: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck

64

Ngoài So sánh 3 , yêu thích của tôi, cóchức năng hợp nhất trong phiên bản Pro . Điều tốt với sự hợp nhất của nó là nó cho phép bạn xem tất cả 4 chế độ xem: cơ sở, trái, phải và kết quả hợp nhất. Nó hơi trực quan hơn P4V nhưng nhiều hơn WinDiff. Nó tích hợp với nhiều kiểm soát nguồn và hoạt động trên Windows / Linux. Nó có nhiều tính năng như quy tắc nâng cao, phiên bản, căn chỉnh thủ công ...

Perforce Visual Client ( P4V ) là một công cụ miễn phí cung cấp một trong những giao diện rõ ràng nhất để hợp nhất (xem một số ảnh chụp màn hình ). Hoạt động trên tất cả các nền tảng chính. Sự thất vọng chính của tôi với công cụ đó là loại giao diện "chỉ đọc" . Bạn không thể chỉnh sửa thủ công các tệp và bạn không thể căn chỉnh thủ công.

PS: P4Merge được bao gồm trong P4V. Perforce cố gắng làm cho nó hơi khó để có được công cụ của họ mà không có khách hàng của họ.

SourceGear Diff / Merge có thể là lựa chọn công cụ miễn phí thứ hai của tôi. Kiểm tra xem hợp nhất ảnh chụp màn hình và bạn sẽ thấy nó có ít nhất 3 lượt xem.


Meld là một công cụ miễn phí mới hơn mà tôi thích sử dụng SourceGear Diff / Merge : Bây giờ nó cũng hoạt động trên hầu hết các nền tảng (Windows / Linux / Mac) với lợi thế khác biệt là hỗ trợ một số kiểm soát nguồn như Git . Vì vậy, bạn có thể có một số lịch sử khác nhau trên tất cả các tập tin đơn giản hơn nhiều. Chế độ xem hợp nhất (xem ảnh chụp màn hình ) chỉ có 3 khung, giống như SourceGear Diff / Hợp nhất . Điều này làm cho việc hợp nhất có phần khó khăn hơn trong các trường hợp phức tạp.

PS: Nếu một công cụ một ngày hỗ trợ hợp nhất 5 lượt xem , điều này thực sự tuyệt vời, bởi vì nếu bạn chọn cam kết trong Git, bạn thực sự không chỉ có một cơ sở mà là hai. Hai cơ sở, hai thay đổi và một kết quả hợp nhất.


7
Hợp nhất Perforce là tuyệt vời. Nó có một công cụ hợp nhất 4 khung, thực sự hữu ích: Của bạn, của họ, Cơ sở chung, Mới
Gal


5
Bạn chỉ có thể cài đặt P4Merge tùy chỉnh mà không cần phần còn lại.
Dirk Bester

6
Phiên bản mới nhất của p4merge không có giao diện "chỉ đọc". Bạn có thể chỉnh sửa tập tin hợp nhất trong khung bên dưới.
Ian Ni-Lewis

1
Đây là một câu trả lời và thảo luận thực sự tuyệt vời. Cảm ơn bạn đã chia sẻ!
Đánh dấu

45

Tôi nghe những điều tốt về kdiff3.


4
+1: kdiff3 vượt trội hơn nhiều so với meld và cũng được hỗ trợ bởi git.
Đánh dấu gian hàng

3
kdiff3có nhiều tính năng hơn nhưng meldcó giao diện người dùng tốt hơn. Theo tôi, meldtốt hơn là hợp nhất dễ dàng trong đó các tính năng được cung cấp meldlà đủ. Nhớ cố gắng diffusequá.
Mikko Rantalainen

kdiff3 cho phép bạn xem 4 lượt xem, meld chỉ cho phép 3 lượt xem. Meld không phải là một công cụ hợp nhất thực sự, nó là một công cụ khác vì nó không hiển thị chế độ xem phiên bản cơ sở.
Akira Yamamoto

43

Công cụ hợp nhất trực quan yêu thích của tôi là SourceGear DiffMerge

  • Nó là miễn phí.
  • Đa nền tảng (Windows, OS X và Linux).
  • Giao diện người dùng sạch
  • Tất cả các tính năng khác nhau mà bạn mong đợi (Diff, Hợp nhất, Diff Diff).
  • Giao diện dòng lệnh.
  • Phím tắt có thể sử dụng.

Giao diện người dùng


3
Làm thế nào để bạn cấu hình nó để làm việc với git?
Ryan Lundy


2
Cảm ơn bạn đã giới thiệu nó cho tôi !! : D Công cụ này sạch và mất ít thời gian để cài đặt và làm việc hơn so với meld. Tôi dành nửa giờ để cố gắng cài đặt meld. Nhưng cái này tôi đã làm trong 5 phút !!
om39a

2
Lưu ý: diffmerge dường như không có tính năng hợp nhất 3 chiều. Tôi đã từ bỏ nó sau khi dùng thử vài tuần vì lý do đó
StormeHawke

Đây là một công cụ tốt và cũng có thể so sánh các thư mục. Vấn đề là nó hơi chậm (MacBookPro 15 2014, MacOS Catalina)
emKaroly

33

vimdiff

Một khi bạn đã học vim (và IMHO bạn nên), vimdiff chỉ là một khái niệm trực giao nhỏ xinh hơn để học. Để nhận trợ giúp trực tuyến trong vim:

:help vimdiff 

Câu hỏi này bao gồm cách sử dụng nó: Làm cách nào để sử dụng vimdiff để giải quyết xung đột?

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

Nếu bạn bị mắc kẹt trong thời kỳ đen tối của việc sử dụng chuột và các tệp bạn đang hợp nhất không quá lớn, tôi khuyên bạn nên sử dụng.


<3 vimdiff, tôi không thể tìm ra cách thuyết phục svn cho phép tôi sử dụng nó làm công cụ 'hợp nhất'.
klokop

gvimdiff cũng hoạt động tốt cho mục đích này.
new123456

2
Sử dụng plugin Fugitive làm cho nó thậm chí còn dễ dàng hơn! vimcasts.org/episodes/ từ
Erik Westrup

Nếu chỉ có một cách để thấy rõ sự khác biệt giữa cục bộ / cơ sở và cơ sở / từ xa.
Ciro Santilli 郝海东 冠状 病 事件

24

Bạn có thể thử P4Merge .

Hình dung sự khác biệt giữa các phiên bản tệp với P4Merge. Giải quyết xung đột do phát triển song song hoặc đồng thời thông qua mã màu.

Các tính năng bao gồm:

  • Làm nổi bật và chỉnh sửa sự khác biệt tập tin văn bản
  • Chọn bao gồm hoặc bỏ qua kết thúc dòng hoặc khoảng trắng
  • Nhận biết các quy ước kết thúc dòng cho Windows (CRLF), Mac (CR) và Unix (LF)
  • Sử dụng các tham số dòng lệnh và khởi chạy từ các ứng dụng không phải của Perforce
  • Hiển thị số dòng khi so sánh và hợp nhất các tệp
  • Loại trừ các tệp được sửa đổi, duy nhất hoặc không thay đổi
  • Lọc các tệp theo tên hoặc phần mở rộng
  • Sắp xếp các tài sản đã sửa đổi trong phân cấp tệp / thư mục quen thuộc
  • So sánh JPEG, GIF, TIFF, BMP và các định dạng tệp khác
  • Mở rộng bằng cách sử dụng API Qt
  • Lớp phủ hình ảnh hoặc hiển thị cạnh nhau
  • Làm nổi bật sự khác biệt trên hình ảnh phủ

tốt nhất tôi đã thấy cho đến nay. dễ dàng giải quyết xung đột bằng cách chọn thay đổi từ danh sách chế độ xem ba chiều
chovy


Liên kết các bản sửa lỗi perforce.com/downloads/helix#clients
Al-Mothafar

Bắt đầu sử dụng nó ngày hôm nay và nó khá trực quan.
Tài nguyên

22

IntelliJ IDEA có một công cụ giải quyết xung đột hợp nhất tinh vi với cây đũa thần Resolve, giúp đơn giản hóa rất nhiều việc hợp nhất:

Nguồn: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/


2
Công cụ hợp nhất của Idea chỉ là tuyệt vời. nó thậm chí còn có sẵn trong phiên bản cộng đồng của Idea, có nghĩa là bạn có thể sử dụng nó miễn phí như một công cụ hợp nhất nâng cao - đây là những gì tôi đang làm (đối với hầu hết các trường hợp tôi sử dụng VSCode khi tôi đang làm việc và tôi sử dụng Idea cho các trường hợp hợp nhất khó khăn). VSCode cũng làm khá tốt, và đôi khi còn tốt hơn cả Idea. nhưng đối với những trường hợp khó khăn, bố cục 3 tấm của chúng là công cụ tốt nhất tôi từng thấy
godblessstrawberry

Tôi ghét cách thanh cuộn 'tập tin tóm tắt' KHÔNG cùng nhau! Lý do chính tôi thích khuếch tán!
anthony

16

Diffuse là yêu thích của tôi nhưng tất nhiên tôi thiên vị. :-) Nó rất dễ sử dụng:

$ diffuse "mine" "output" "theirs"

Diffuse là một công cụ hợp nhất văn bản nhỏ và đơn giản được viết bằng Python. Với Diffuse, bạn có thể dễ dàng hợp nhất, chỉnh sửa và xem xét các thay đổi đối với mã của mình. Khuếch tán là phần mềm miễn phí.


2
Tôi thực sự thích khuếch tán, và tôi không thiên vị.
jturcotte

2
@Derrick Moser: diffusetrông rất đẹp. Tôi chỉ thử nó bây giờ và nó đã làm tốt hơn khác kdiff3. Nhưng, tôi đang cố gắng sử dụng nó git mergetoolvà nó mở 4 tệp cạnh nhau (cục bộ, kết quả hợp nhất, từ xa, cơ sở) và màn hình của tôi không đủ rộng cho điều đó. Tôi đã phải làm rất nhiều cuộn ngang. kdiff3 chỉ hiển thị 3 cạnh nhau và kết quả ở nửa dưới của cửa sổ.
yairchu

khuếch tán có một số tùy chọn hợp nhất bổ sung so với meld (cho phép tham gia cả hai phiên bản thay vì chọn một trong số chúng).
Audrius Meskauskas

khuếch tán hoạt động ra khỏi hộp trên các cửa sổ, để so sánh 2 thư mục, với repo CVS, với repo Git, hợp nhất các xung đột hợp nhất git. Các tệp khuếch tán khuếch tán mở trong các tab trong một cửa sổ duy nhất. Tôi đã chuyển sang khuếch tán (sau khi đã sử dụng ediff của emacs (quá nhiều tính năng, hữu ích trong những năm 90)> vimdiff (tổ hợp phím bổ trợ phức tạp)> p4merge> araxis (sở hữu)> meld (quá chậm), tkdiff (chỉ cvs) , regex tốt bỏ qua các tính năng)> winmerge (tốt)> khuếch tán (nhanh, di động, hoạt động như mong đợi)) lần đầu tiên tôi thử khuếch tán.
mosh

Làm cách nào để thay đổi ngôn ngữ GUI trong Diffuse?
zach


9

Bạn có thể thay đổi công cụ được sử dụng bởi git mergetool bằng cách chuyển git mergetool -t=<tool>hoặc --tool=<tool>. Để thay đổi mặc định (từ vimdiff) sử dụng git config merge.tool <tool>.



6

Vì vậy, để hợp nhất git, bạn có thể thử:

  • DiffMerge để so sánh trực quan và hợp nhất các tệp trên Windows, OS X và Linux.

    DiffMerge

  • Meld , là một công cụ khác biệt và hợp nhất trực quan.

    Meld là một công cụ khác biệt và hợp nhất trực quan

  • KDiff3 , một chương trình khác và hợp nhất), so sánh hoặc hợp nhất 2 hoặc 3 tệp / thư mục nhập văn bản.
  • opendiff(một phần của Công cụ Xcode trên macOS), tiện ích dòng lệnh khởi chạy ứng dụng FileMerge từ Terminal để so sánh đồ họa với các tệp hoặc thư mục, bao gồm cả việc hợp nhất .

2
git config --global merge.tool opendifflàm việc tốt nhất cho tôi
James Matthew Mudgett

5

Tôi đã thử rất nhiều công cụ được đề cập ở đây và không có công cụ nào trong số đó là những gì tôi đang tìm kiếm.

Cá nhân, tôi đã tìm thấy Atom là một công cụ tuyệt vời để hình dung sự khác biệt và giải quyết / hợp nhất xung đột.

Đối với việc hợp nhất, không có ba chế độ xem nhưng tất cả được kết hợp thành một chế độ làm nổi bật màu cho mỗi phiên bản. Bạn có thể chỉnh sửa mã trực tiếp hoặc có các nút để sử dụng bất kỳ phiên bản nào của đoạn mã đó bạn muốn.

Tôi thậm chí không sử dụng nó như một trình soạn thảo hoặc IDE nữa, chỉ để làm việc với git. Giao diện người dùng sạch sẽ và rất đơn giản, cộng với khả năng tùy biến cao.

  • Bạn có thể khởi động nó từ dòng lệnh và chuyển vào một tệp bạn muốn mở hoặc thêm thư mục dự án của bạn (git repo).

    • Tôi cũng sẽ đề xuất người quản lý dự án như một cách rất thuận tiện để điều hướng giữa các dự án mà không cần lấp đầy khung nhìn cây của bạn.
  • Vấn đề duy nhất tôi gặp phải là làm mới - khi làm việc với nguyên tử kho lớn có thể chậm cập nhật những thay đổi bạn thực hiện bên ngoài nó. Tôi chỉ luôn đóng nó khi tôi hoàn thành, và sau đó mở lại khi tôi muốn xem lại các thay đổi / cam kết của mình. Bạn cũng có thể tải lại cửa sổ với ctrl + shift + f5, chỉ mất một giây.

Và tất nhiên nó miễn phí.


3

Tôi sử dụng các công cụ khác nhau để hợp nhất và so sánh:

git config --global diff.tool diffuse
git config --global merge.tool kdiff3

Nắm tay có thể được gọi bởi:

git difftool [BRANCH] -- [FILE or DIR]

Thứ hai được gọi khi bạn sử dụng git mergetool.


2

Bạn có thể cài đặt công cụ diff / merge ECMerge trên Linux, Mac hoặc Windows. Nó được cấu hình sẵn trong Git, vì vậy chỉ cần sử dụng git mergetoolsẽ thực hiện công việc.


2

Nếu bạn sử dụng visual studio , công cụ tích hợp Team Explorer là một công cụ rất hay để giải quyết xung đột hợp nhất git.


0

gitx http://gitx.frim.nl/

Một số lỗi khi làm việc với các bộ cam kết lớn nhưng tuyệt vời để duyệt qua các thay đổi và chọn các thay đổi khác nhau cho giai đoạn và sau đó cam kết.

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.