전 자식의 사전 커밋 후크를 사용하여 몇 가지 규칙을 적용하려고합니다. git diff --name-only
을 사용하여 변경되지 않은 파일이 있는지 확인하고, 존재하는 경우 커밋 프로세스를 실패합니다. 하지만, 내 pre-commit
파일 :사전 커밋 후크의 힘내 명령이 올바른 출력을 반환하지 않습니다.
#!/bin/bash
cd "$(git rev-parse --show-toplevel)"
pwd
test=$(git diff --name-only)
echo "Untracked files: $test"
exit 0
git diff --name-only
는 빈 문자열을 반환합니다. 쉘에서이 명령을 실행하면 unstaged 파일이 변경된 것을 볼 수 있습니다. sudo
을 사용하도록 명령을 변경하면 문제가 올바르게 사용자 권한으로 간주됩니다. 그러나 chmod u+x
또는 chmod 777
pre-commit
파일을 보내는 것은 결과에 영향을 미치지 않는 것으로 보입니다.
또한 명령을 테스트하기 위해 git repo 루트 내부에 유사한 bash 파일을 생성했으며 예상대로 작동합니다.
문제점을 재현 할 수 없습니다. 그래도'git diff --name-only'는 인덱스를 작업 트리와 비교하여 수정되지 않은 unstaged 파일을 찾습니다 (텍스트는 원하는 것입니다). 지금까지 그렇게 좋았지 만 다음과 같이한다 :'echo "Untracked ..."unstaged *가 아닌 * untracked *라는 단어가있다. – torek
@torek 좋은 캐치, unstaged라고한다. – Bloodyaugust