2012-06-13 25 views

Trả lời

15

Sửa: Tất nhiên, dễ dàng, rõ ràng và hơn câu trả lời miễn phí -engineering là git status, dưới dạng kostixnotes. Điểm bất lợi của việc này là git status kiểm tra trạng thái của chỉ mục so với bản sao làm việc, chậm, trong khi bên dưới chỉ kiểm tra chỉ mục, hoạt động nhanh hơn nhiều.

Để lấy tên của các tệp bị xung đột, hãy sử dụng git ls-files --unmerged.

$ git ls-files --unmerged 
100755 f50c20668c7221fa6f8beea26b7a8eb9c0ae36e4 1  path/to/conflicted_file 
100755 d0f6000e67d81ad1909500a4abca6138d18139fa 2  path/to/conflicted_file 
100755 4cb5ada73fbe1c314f68c905a62180c8e93af3ba 3  path/to/conflicted_file 

Để dễ dàng, tôi đã điều sau đây trong tập tin ~/.gitconfig của tôi (Tôi không thể khẳng định tín dụng, nhưng tôi không thể nhớ nguồn gốc):

[alias] 
    conflicts = !git ls-files --unmerged | cut -f2 | sort -u 

này mang lại cho tôi:

$ git conflicts 
path/to/conflicted_file 

Để tìm ra số xung đột trong một tệp, tôi chỉ sử dụng grep cho phần ======= của điểm đánh dấu xung đột:

$ grep -c '^=======$' path/to/conflicted_file 
2 

Bạn có thể thêm dòng sau vào ~/.gitconfig của bạn cũng như dòng conflicts trên:

[alias] 
    count-conflicts = !grep -c '^=======$' 
    count-all-conflicts = !grep -c '^=======$' $(git conflicts) 

này sẽ cung cấp cho bạn:

$ git conflicts 
path/to/a/conflicted_file 
path/to/another/different_conflicted_file 

$ git count-conflicts path/to/a/conflicted_file 
2 

$ git count-all-conflicts 
5 
1

git status thấy các tập tin mà đang thất bại trong việc được sáp nhập tự động và có xung đột, với gợi ý về cách ghi lại trạng thái đã giải quyết của các tệp như vậy.

+0

Có, nhưng ... có chuyển đổi nào để hiển thị * chỉ * các tệp xung đột không? – shytikov

+0

@AlexeyShytikov, tôi không biết rõ, nhưng từ hướng dẫn, có vẻ như trạng thái 'git --short' có thể mã hóa trạng thái của mỗi tệp được liệt kê bằng hai ký tự - xem phần" Định dạng ngắn ". Tôi nghĩ rằng nó có thể quấn một cuộc gọi đến 'git status --short' trong một kịch bản lệnh shell mà sẽ' sed' hoặc 'grep' chỉ các bit có liên quan của đầu ra. – kostix

+1

Mặt khác, câu trả lời @me_and đã yêu cầu viết kịch bản, vì vậy có thể sẽ hợp lý hơn nếu dùng phương pháp tiếp cận của anh ấy (và do đó thực hiện lệnh sứ của riêng bạn). – kostix

0

Dưới đây là một số tính năng hữu ích hoạt động trên bash 4. Bạn có thể thêm tất cả các loại thống kê tệp đơn vào điều này, ví dụ: số dòng mã đại diện cho số lượng xung đột.

#!/usr/bin/env bash 

shopt -s globstar 
for theFile in ./**/*; do 
    if [ -f "$theFile" ] 
    then 
     conflicts=`grep -c '^=======$' "$theFile"` 
     if [ "$conflicts" != "0" ] 
      then 
      echo "$theFile $conflicts" 
     fi 
    fi 
done