그냥 설정 some.sh
실행 (로 파일을 chmod 755 ...
) 권한은 콘텐츠를 업데이트하지만되었다. 파일을 git 에 커밋 하여 실행 파일이 clone / checkout / pull 에서 복원 / 설정되도록 할 수 있습니까?
업데이트 : 새 권한이 제출되었음을 어떻게 추적 github
합니까?
그냥 설정 some.sh
실행 (로 파일을 chmod 755 ...
) 권한은 콘텐츠를 업데이트하지만되었다. 파일을 git 에 커밋 하여 실행 파일이 clone / checkout / pull 에서 복원 / 설정되도록 할 수 있습니까?
업데이트 : 새 권한이 제출되었음을 어떻게 추적 github
합니까?
답변:
기본적으로 git은 파일 실행 권한을 변경하면 업데이트합니다. 다른 권한은 변경하거나 추적하지 않습니다.
실행 권한을 수정할 때 변경 사항이 표시되지 않으면 파일 모드를 무시하는 구성이 git에있을 수 있습니다.
파일 의 .git
폴더 에서 프로젝트 config
를 살펴보면 다음과 같은 내용이 표시됩니다.
[core]
filemode = false
true
선호하는 텍스트 편집기에서로 변경 하거나 다음을 실행할 수 있습니다.
git config core.filemode true
그런 다음 파일을 정상적으로 커밋 할 수 있어야합니다. 권한 변경 만 커밋합니다.
git status
, 나는 변화를 본다.
@ fooMonster 기사가 나를 위해 일했습니다.
# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe script.sh
보시다시피 파일에는 644 권한이 있습니다 (100은 무시). 755로 변경하고 싶습니다 :
# git update-index --chmod=+x script.sh
변화를 저 지르다
# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh
git commit -a
나를 위해 아무것도하지 않았다, 그러나 명령 줄에 메시지를 설정 않았다.
# git update-index --chmod=+x script.sh
# git ls-tree HEAD
# git commit -m "Changing file permissions"
# git push
나를 위해 작동하지 않습니다.
모드가 true이고 파일 권한이 변경되었지만 git은 할 일이 없다고 말합니다.
git init
git add dir/file
chmod 440 dir/file
git commit -a
문제는 git이 특정 권한 변경 만 인식한다는 것입니다.
git
실제로 파일이 실행 가능한지 아닌지 전체 * nix 권한 세트 만 추적합니다. 커밋할만한 무언가를 바꾸 었다고 생각하기 위해 실행 파일간에 파일을 전환해야합니다.
post-checkout
후크가 git
있지만 작업 트리에서 파일을 업데이트하는 가능한 모든 항목을 다루는 지 확실하지 않습니다. 리포지토리에 추가 셸 스크립트를 추가하는 것이 좋습니다. 또는 git
메타 데이터를 저장 하는 기능을 보강하는 몇 가지 프로젝트가 있지만 실제로 시도한 적이 없습니다 ...
git update-index --refresh
했지만 diff가 표시 old mode 100644 new mode 100755
됩니다. 그것은 모든 권한이 업데이트되지 않았습니다
github
합니까?