2014-09-26 15 views

Trả lời

1

Thêm tùy chọn bỏ qua dòng trống. Hãy thử

git diff --name-only -w --ignore-blank-lines 
+0

Nó không hoạt động. Vẫn có cùng số lượng tệp như 'git diff' –

+0

Cấu hình core.whitespace của bạn là gì? Nhập "git config core.whitespace" –

+0

cấu hình của tôi là ** dấu cách, dấu cách trước tab ** –

4

Để giải quyết vấn đề này, tôi đã viết một tập lệnh để thực hiện. Hy vọng nó hữu ích cho người khác.

#!/usr/bin/env bash 

GIT_REPO_ROOT=`git rev-parse --show-toplevel` 
# cd ${GIT_REPO_ROOT} 

for f in `git diff --name-only`; 
do 
    MY_DIFF=`git diff -w ${GIT_REPO_ROOT}/${f}` 
    if [[ ! ${MY_DIFF} == "" ]]; 
    then 
     echo ${GIT_REPO_ROOT}/${f} 
    fi 
done 

Tập lệnh này giảm kết quả từ 88 tệp ('git diff --name-only') thành 8 tệp.

+0

Bạn có thể cần cẩn thận ở đây nếu tên tệp của bạn có dấu cách trong đó, vì 'for' thường sẽ lặp qua mỗi từ được phân cách bằng dấu cách trong không gian và không phải mỗi dòng. Bạn có thể giải quyết vấn đề này bằng cách đặt 'IFS' thành dòng mới, hoặc sử dụng' git diff --name-only | trong khi đọc -r f; do ... done' thay vì 'for' – user2221343

+0

thực hiện chính xác những gì tôi muốn. Cảm ơn nhiều – aaaaaa

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