2010-03-18 33 views
45

Tôi đang sử dụng Git Extensions và cài đặt trước và thiết lập KDiff làm công cụ khác để giải quyết xung đột hợp nhất. Tôi rất thích Winmerge và muốn thay thế KDiff bằng Winmerge.Làm thế nào để sử dụng Winmerge với Git Extensions?

Trong cài đặt Tiện ích mở rộng Git, có các cài đặt để thay đổi công cụ Mergetool, nhưng tôi không thể tìm ra cú pháp nào tôi nên sử dụng và tại sao. Dường như có 4 biến: $ BASE, $ LOCAL, $ REMOTE, $ MERGED. Có vẻ như tôi nên vượt qua chúng để WinMergeU.exe, nhưng với các tham số dòng lệnh?

Tôi đã cố gắng tìm kiếm điều này một vài lần, nhưng không có câu trả lời nào thực sự có vẻ hiệu quả.

+2

Có http://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program/949242#949242 hoặc http://stackoverflow.com/ câu hỏi/1881594/sử dụng-winmerge-bên trong-của-git-to-file-diff/1884517 # 1884517 giúp đỡ? – VonC

+1

Kiểm tra câu trả lời của tôi cho giải pháp đơn giản nhất và dễ dàng nhất –

Trả lời

43

Tổng quan
Sau đây là hướng dẫn về cách thiết lập GIT Version Control để bạn có thể sử dụng bộ công cụ tốt hơn cài đặt mặc định. Thiết lập yêu cầu GIT Extensions đã được cài đặt và liên quan đến việc cấu hình Winmerge trong các phần mở rộng GIT.

Cài đặt
Đi qua tất cả các lời nhắc và cài đặt trong thư mục mặc định cho Winmerge.

Định cấu hình Winmerge trong điều khiển phiên bản GIT
Mở tài liệu mới trong trình chỉnh sửa văn bản. Sao chép/dán thông tin sau và lưu tài liệu dưới dạng "wMerge.sh" vào thư mục "C: \ Program Files (x86) \ Git \ bin \" của bạn.

echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2" 

Goto thư mục "Users-> username" của bạn và định vị tệp .gitconfig. Mở nó trong bản soạn thảo yêu thích của bạn/dán đoạn mã sau và Lưu:

[user] 
    name = enter your name 
    email = [email protected] 
[core] 
    autocrlf = false 
[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = wMerge.sh \"$MERGED\" \"$REMOTE\" 
    path = c:/Program Files (x86)/winmerge/winmergeu.exe 
[mergetool] 
    keepBackup = false 
    trustExitCode = false 
[diff] 
    guitool = winmerge 
[difftool "winmerge"] 
    path = c:/Program Files (x86)/winmerge/winmergeu.exe 
    cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\" 

Run "GitExtensions", goto "cụ-> Settings-> Git Extensions-> Git Config". Nếu bạn đã cài đặt đúng cách và tham chiếu các công cụ vào thư mục của họ, trang cài đặt chung của bạn sẽ như sau (LƯU Ý: Vui lòng điền tên của bạn vào tên và email):

mergetool: winmerge
đường dẫn đến mergetool: lệnh c:/Program Files (x86)/winmerge/winmergeu.exe
mergetool: wMerge.sh "$MERGED" "$REMOTE"
difftool: winmerge
đường dẫn đến difftool: c:/Program Files (x86)/winmerge/winmergeu.exe
lệnh difftool: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"

dòng kết thúc: thanh toán như-là, cam kết như nó vốn có

Điều hướng đến tab danh sách kiểm tra để xác minh rằng GIT là tất cả "xanh" và hài lòng với thiết lập của bạn.

+0

yêu thích cách bạn đã đề cập mọi thứ rõ ràng – Kiarash

+0

Tôi đặt wMerge.sh vào/Git/bin/nhưng tôi nhận được:/mingw64/libexec/git-core/git-mergetool - lib: dòng 133: wMerge.sh: lệnh không tìm thấy –

8

@ câu trả lời Sebastiaan đã không làm việc cho tôi (có lẽ nó là lỗi thời?)

Đây là những "Cài đặt chung" mà làm việc cho tôi sử dụng GitExtensions 2.28:

Mergetool: winmerge
Đường dẫn đến mergetool : D:/path/to/WinMerge/WinMergeU.exe
Lệnh Mergetool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
Điều này khiến WinMerge sử dụng "tệp xung đột" do git tạo ra.
-e cho phép nhấn ESC để đóng winmerge.

Difftool: winmerge
Đường dẫn đến difftool: D:/path/to/WinMerge/WinMergeU.exe
Difftool lệnh: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl-dr thiết lập các giới thiệu cho khung bên trái và phải.

+0

này làm việc cho tôi – ranthonissen

+0

Đây là câu trả lời đúng ... vấn đề đối với tôi là cài đặt mặc định GitExtensions cho WinMerge didn 'include "-dl" "Dr" từ xa "" cục bộ. Cảm ơn! –

3

Thêm hoặc thay đổi sau trong tập tin cấu hình:

[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED" 

Giải pháp này là khác biệt trong hai cách:

  1. Đơn giản chỉ cần gọi WinMergeU.exe *conflictfile*, trong khi các cuộc gọi hai mặt đau khổ từ thực tế là cửa sổ bên tay trái hiển thị <<<<<<<, =======>>>>>>> điểm đánh dấu mà $ MERGED chứa.
  2. Áp dụng công cụ mergetool trên cơ sở từng lần - Tôi đang chỉnh sửa tệp $ GIT_DIR/config. Kết quả tương tự có thể đạt được bằng cách gọi git config mà không có đối số --system hoặc --global. Điều này cần lưu ý rằng có a few scopes of configuration to choose from.

Biến $ PROGRAMFILES được duy trì bởi git bash và (không giống biến tương tự trên cửa sổ gốc cmd) nó điều hướng đến "Program Files (x86)".

+0

Tôi không nghĩ rằng $ PWD là bắt buộc ở đây. Câu trả lời này hoạt động tốt cho tôi mà không có nó. – robertpateii

10

Trên cửa sổ 7, đây là những gì cuối cùng đã làm việc cho tôi. Lưu ý các dấu ngoặc kép "'c:/path/here'" xung quanh đường dẫn tệp chương trình của tôi.

[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED" 
[diff] 
    tool = winmerge 
[difftool "winmerge"] 
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr 
+0

Điều này cũng làm việc cho tôi trên Windows 7. Cảm ơn bạn :) –

+0

Điều này đã giải quyết được sự cố của tôi cho Windows 10 một Visual Studio 2015. Cảm ơn! –

17

On Git Extensions v2.47.3, nó thực sự dễ dàng để thiết lập:

Cài đặt -> Cài đặt chung -> trong trình đơn thả xuống cho 'Mergetool' ghi bằng tay: WinMerge và xem điều kỳ diệu .

Tương tự cho trình đơn thả xuống 'Difftool'.

enter image description here

|| || || 
\/ \/ \/ 

enter image description here

Nó chỉ là ngớ ngẩn rằng tùy chọn 'WinMerge' không được điền sẵn trong menu thả xuống. Oh well.

+3

Điều này đã làm việc cho tôi như một nét duyên dáng :) –

+1

Đây là giải pháp dễ nhất :) –

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