파일을 편집한 후 변경 사항을 취소하고 싶을 때 다음을 사용합니다.
git checkout -- file.txt
문제는 git
기존 파일에 대한 파일 권한이 유지되지 않는다는 것입니다. file.txt
권한이 있지만 그 644
이후에는 (제 생각에는 )git checkout
600
umask
나는 git이 파일 권한을 저장하지 않는다는 것을 알고 있으며 새 파일을 생성할 때 권한을 기억하고 싶지 않습니다.
하지만 이 경우에는 파일이 존재합니다. git
권한을 변경하지 않고 유지할 수 없는 이유는 무엇입니까 ?
이 문제는 몇 가지 추악한 해킹(일부 후크)으로 해결될 수 있습니까?
답변1
Git이 파일을 체크아웃할 때 기본적으로 시스템에서 파일의 umask를 사용하고 디렉터리이거나 실행 가능으로 표시된 경우 실행 가능 비트를 설정합니다. 이는 Git이 파일을 삭제하고 다시 생성하기 때문에 기존 파일의 권한이 유지되지 않기 때문입니다.
core.sharedRepository
체크아웃하려는 파일에 대한 권한을 구성할 수 있는 옵션이 있기 때문에 이는 실제로 의도적으로 설계된 것입니다 . 기본적으로 으로 설정되어 있으며 umask
이는 umask가 사용됨을 의미합니다. 저장소에서 다른 동작을 원할 경우 다르게 설정하면 0644
해당 값이 사용됩니다.
원하는 경우 post-checkout
후크를 사용하여 권한을 다시 변경할 수 있지만 모든 경우에 작동하지는 않습니다.