2012-06-13 2 views

답변

15

편집 검색하는 것이 아니다 : 물론, 쉬운, 명백한 이상 - 공학 무료 대답은 git status, kostixnotes입니다. 이 단점은 git status이 작업 복사본과 비교하여 인덱스의 상태를 확인하는 것입니다. 느린 작업이지만 아래에서는 인덱스를 확인하는 것보다 훨씬 빠른 작업입니다.

충돌하는 파일의 이름을 얻으려면 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 

, 나는 (I 신용을 주장 할 수 없습니다,하지만 난 원래 소스를 기억할 수없는) 내 ~/.gitconfig 파일에 다음과 같은 한 :

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

이 나에게 제공합니다

$ git conflicts 
path/to/conflicted_file 
난 그냥 충돌 표식의 ======= 부분 grep를 사용하는 것, 하나의 파일에 충돌의 수를 해결하려면

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

당신은 위의 conflicts 라인뿐만 아니라 당신의 ~/.gitconfig에 다음을 추가 할 수 있습니다 :이 당신에게 줄 것이다

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

:

$ 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 병합에 실패하는 파일을 보여줍니다 이러한 파일의 해결 된 상태를 기록하는 방법에 대한 힌트가 있으면 자동으로 충돌이 발생합니다.

+0

예,하지만 ... 충돌하는 파일 만 표시하는 스위치가 있습니까? – shytikov

+0

@AlexeyShytikov, 나는 알지 못한다. 그러나 매뉴얼에서,'git status --short'는 두 개의 문자를 사용하여 나열된 각 파일의 상태를 코드화 할 수있다. "짧은 형식"부분을 보라. 출력의 관련 비트 만'sed' 또는'grep'하는 쉘 스크립트에서'git status --short'를 호출하는 것이 가능하다고 생각합니다. – kostix

+1

반면에 @me_and는 매우 어쨌든 스크립팅이 필요하므로 접근 방법을 취하는 것이 더 합리적 일 수 있습니다. (따라서 자신의 도자기 명령을 구현할 수 있습니다). – kostix

0

여기 bash 4에서 작동하는 유용한 기능이 있습니다. 모든 종류의 단일 파일 통계를 여기에 추가 할 수 있습니다 (예 : 충돌 횟수를 나타내는 코드 줄 수입니다.

#!/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 
관련 문제