git status -s
트리에 추적되지 않은 파일이 있는지 확인하기 위해 보고 싶은 출력입니다 . 다음 테스트를 시도했지만 정규식이 일치하지 않습니다. 왜 안 돼?
$ git status -s
## master
M updated-file
?? new-file
$ [[ $(git status -s) =~ ^\?\? ]] || echo "no match"
no match
또한 추가/수정/제거된 파일을 동일한 방식으로 테스트할 수 있기를 바랍니다. 나는 보통 ^\s*[AMD]
이런 목적으로 이와 같은 것을 사용하지만 그것도 작동하지 않습니다. 무엇을 제공합니까?
답변1
문자열의 각 줄이 아닌 전체 문자열을 일치시키므로 실제로 ##
해당 정규식 내에서 테스트하고 있습니다.
grep
더 나은 선택입니다:
if ! git status -s | grep -q '^??'; then
echo "no match"
fi
요청 시 추가/수정/삭제에 대해 동일한 작업을 수행할 수 있습니다.
git status -s | grep '^ *[AMD]'
git status --porcelain
좀 더 구문 분석 지향적인 방법(이 옵션은 1.7.0에 처음 등장)을 살펴볼 수도 있습니다 .