2012-10-25 1 views

답변

1

입니다 당신이 할 수 있다면 그것을 할 생각).

전 후크를 사용하여 나에게 잘 작동하는 후행 공백을 추가하는 커밋을 거부했습니다. 생성/.git/hooks/pre-commit에 다음을 추가하고 실행합니다

# Work out what to diff against 
if git rev-parse --verify HEAD >/dev/null 2>&1 
then 
    against=HEAD 
else 
    # Initial commit: diff against an empty tree object 
    against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 
fi 

# If there are whitespace errors, print the offending file names and fail. 
exec git diff-index --check --cached $against -- 
0

Git은 기본적으로 후행 공백에 대해 경고하고 공백 오류를 추가하는 커밋을 거부하도록 구성 할 수 있습니다.

공백을 제거하면 파일을 변경하고 git-add 단계를 다시 실행해야만 작동합니다. 추가시 자동으로 수행 할 수 있지만 준비된 작업 트리와 다른 작업 트리가 남기 때문에 파일이 git-status 출력에서 ​​여전히 "변경되었지만 업데이트되지 않음"으로 표시됩니다.

후행 공백을 제거하는 가장 쉬운 방법은 내가 나는 그것이 좋은 것 생각하지 않는다 (단지 자동 커밋 시간에 공백을 후행 제거하는 좋은 방법이 생각하지 않습니다

sed -i -e 's/[:blank:]*$//' file.c ... 
0

글쎄, 결국 나는 그것에 대해 gitadd 명령을 쓰기로했다.

#!/bin/bash 


# Number of arguments passed 
argc=$# 


if [ $argc -eq 0 ]; then 
     argv=($(git diff --name-only HEAD)) 
else 
     argv=([email protected]) 
fi 

for file in "$argv"; do 

     sed -i -e 's/^[[:blank:]]\+$//' $file 

     git add $file # stage patched file 

done 
관련 문제