2012-09-25 44 views
13

Thường thì khi tôi làm khác, tôi muốn chỉnh sửa tệp cục bộ của mình trước khi cam kết. Điều này hoạt động rất tốt trong khung nhìn so sánh của Eclipse vì nó cho phép bạn dễ dàng chỉnh sửa tệp cục bộ cũng như sao chép các thay đổi từ phiên bản trước.Sử dụng kdiff3 để chỉnh sửa khác biệt với git

Tôi đang cố gắng thiết lập git và kdiff3 để hoạt động theo cùng một cách. Nó hoạt động như mong đợi khi tôi đang sử dụng kdiff3 như mergetool của tôi. Tuy nhiên khi tôi thiết lập nó như là difftool, nó mang lại cho tôi một cái nhìn chỉ đọc để tôi không thể thực hiện bất kỳ chỉnh sửa nào. Theo tài liệu (http://kdiff3.sourceforge.net/doc/documentation.html) Tôi mong đợi tùy chọn --output để cung cấp cho tôi hai tệp hợp nhất mà tôi muốn, nhưng không. Phần liên quan của .gitconfig tôi:

[diff] 
    tool = kdiff3 
[difftool "kdiff3"] 
    cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3 $LOCAL $REMOTE --output $LOCAL 
    trustExitCode = false 
+1

Bạn đã thoát khỏi ''$'' trong '$ LOCAL' và' $ REMOTE', hay ít nhất đặt '\" 'quanh' $ LOCAL' và '$ REMOTE'? – VonC

+0

Tôi đã thử và nhận cùng một kết quả. –

Trả lời

7

tôi có thể sử dụng KDiff3 để chỉnh sửa các tập tin trong cây nếu tôi sử dụng lệnh sau:

kdiff3 $LOCAL $REMOTE --output $MERGED 

KDiff3 là trong $PATH tôi, vì vậy bit quan trọng thay đổi đầu ra từ $LOCAL thành thay vì là $MERGED.

Từ git-difftool manpage:

...the configured command line will be invoked with the following 
variables available: $LOCAL is set to the name of the temporary file 
containing the contents of the diff pre-image and $REMOTE is set to 
the name of the temporary file containing the contents of the diff 
post-image. $MERGED is the name of the file which is being compared. 

Kể từ khi thiết lập các đầu ra để $LOCAL sẽ viết thư cho một tập tin tạm thời, bạn sẽ thay muốn viết thư cho $MERGED vì đó sẽ là thực tế "địa phương "tập tin trong cây.