2012-07-04 23 views
10

Tôi muốn git diff để đầu ra bình thường, đồng bằng cũ đầu ra diff (không thống nhất khác biệt, và không bối cảnh khác biệt).Làm thế nào để tạo ra "git diff" đầu ra định dạng diff thông thường (không thống nhất, không theo ngữ cảnh)?

Tôi muốn điều này:

$ diff file1 file2 
2c2 
< b 
--- 
> B 
4d3 
< d 
5a5 
> f 

Tôi không muốn đầu ra thống nhất:

$ diff -u file1 file2 
--- file1  2012-07-04 07:57:48.000000000 -0700 
+++ file2  2012-07-04 07:58:00.000000000 -0700 
@@ -1,5 +1,5 @@ 
a 
-b 
+B 
c 
-d 
e 
+f 

Tôi không muốn ra bối cảnh:

$ diff -c file1 file2 
*** file1  2012-07-04 07:57:48.000000000 -0700 
--- file2  2012-07-04 07:58:00.000000000 -0700 
*************** 
*** 1,5 **** 
    a 
! b 
    c 
- d 
    e 
--- 1,5 ---- 
    a 
! B 
    c 
    e 
+ f 

Tôi đã cố gắng nhiều git difftool --tool= args với không may mắn và tôi không tìm thấy bất kỳ nội dung nào có liên quan trong git diff --help

Trả lời

12
git difftool --extcmd=diff 

hay, mà không nhắc:

git difftool --extcmd=diff --no-prompt 

Đây là git difftool hơn git diff nhưng nó đang làm những gì tôi muốn.

+0

Tôi có thể hỏi tại sao bạn cần loại dữ liệu đó, và ý nghĩa của '>' và '<' là gì –

1

Bạn có thể sử dụng cùng một kịch bản (xem man git (1) để biết chi tiết):

$ cat diff.sh 
#!/bin/sh 
# get args: path old-file old-hex old-mode new-file new-hex new-mode 

diff "$2" "$5" 

return=$? 
if [ $return -le 1 ]; then 
    exit 0 
else 
    exit $return 
fi 

$ GIT_EXTERNAL_DIFF=./diff.sh git diff HEAD^..HEAD 
+0

Tôi đã thử điều này, nhưng tôi gặp lỗi: diff.sh git diff HEAD^.. HEAD: 1: diff.sh git diff HEAD^.. HEAD: diff.sh: không tìm thấy khác biệt bên ngoài đã chết, dừng tại "subdir/file3" may mắn thay, tôi tìm thấy một giải pháp dễ dàng hơn nhiều trong khi googling, mà tôi đặt trong một câu trả lời riêng biệt: –

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