Git의 파일에 chmod 권한을 추가하는 방법은 무엇입니까?
나는 커밋할 것입니다..sh파일입니다. 그러나 다른 서버에서 동일한 파일을 체크아웃할 때 실행할 수 있기를 바랍니다.
수동으로 작업하지 않고 작업할 수 있는 방법이 있습니까?chmod u+x파일을 체크아웃하는 서버에 있는 파일?
공식 문서에 따르면 다음을 사용하여 추적된 파일에 "실행 가능" 플래그를 설정하거나 제거할 수 있습니다.update-index하위 명령
플래그를 설정하려면 다음 명령을 사용합니다.
git update-index --chmod=+x path/to/file
제거하려면 다음을 사용합니다.
git update-index --chmod=-x path/to/file
후드 아래
일반 유닉스 파일 권한 시스템처럼 보이지만 실제로는 그렇지 않습니다.Git는 내부 스토리지의 각 파일에 대해 특별한 "모드"를 유지합니다.
100644일반 파일의 경우100755실행 가능한 것들을 위하여.
다음을 사용하여 시각화할 수 있습니다.ls-file하위 명령, 사용--stage옵션:
$ git ls-files --stage
100644 aee89ef43dc3b0ec6a7c6228f742377692b50484 0 .gitignore
100755 0ac339497485f7cc80d988561807906b2fd56172 0 my_executable_script.sh
기본적으로 저장소에 파일을 추가할 때 Git는 파일 시스템 속성을 준수하고 그에 따라 올바른 파일 모드를 설정합니다.옵션을 false로 설정하여 이 옵션을 사용하지 않도록 설정할 수 있습니다.
git config core.fileMode false
문제 해결
Git 파일 모드가 설정되지 않았지만 파일에 올바른 파일 시스템 플래그가 있는 경우 모드를 제거하고 다시 설정합니다.
git update-index --chmod=-x path/to/file
git update-index --chmod=+x path/to/file
보너스
Git 2.9부터는 파일을 준비하고 하나의 명령으로 플래그를 설정할 수 있습니다.
git add --chmod=+x path/to/file
앤트웨인의 대답은 맞고, 이것은 댓글이어야 하지만 댓글은 공간이 충분하지 않고 포맷을 허용하지 않습니다. :-) Git에서는 파일 권한이 둘 중 하나로만 기록된다는1 것을 추가하고 싶습니다.644또는755(계속)100644그리고.100755그100part는 "일반 파일"을 의미합니다.
diff --git a/path b/path
new file mode 100644
전자(644)는 파일을 실행할 수 없어야 함을 의미하며, 후자는 파일을 실행할 수 있어야 함을 의미합니다.파일 시스템 내에서 실제 파일 모드로 전환되는 방법은 OS에 따라 다소 다릅니다.유닉스 계열 시스템에서 비트는 일반적으로 다음과 같은 설정을 통해 전달됩니다.022"그룹" 및 "기타"에서 쓰기 권한을 제거하거나,002"기타"에서만 쓰기 권한을 제거합니다.또한 그럴 수도 있습니다.077특히 개인 정보 보호에 관심이 있고 "그룹"과 "기타" 모두에서 읽기, 쓰기 및 실행 권한을 제거하려는 경우.
1일부 리포지토리에 모드가 있는 트리 항목이 있도록 그룹 권한을 저장한 Git의 극히 초기 버전664Modern 수 할 수 에 오래된 는 여전히 트리 있습니다.현대의 Git는 변경할 수 없지만 개체의 어떤 부분도 변경할 수 없기 때문에 이러한 오래된 권한 비트는 오래된 트리 개체에서 여전히 유지됩니다.
0644 또는 0755만 저장하도록 변경된 내용은 2005년 4월 16일 Git v0.99 이전의 commit44794706eeb57f2였습니다.
저장소의 모든 파일에 실행 가능 플래그를 설정하는 방법
git ls-files --stage |grep 100644 | cut -f2 | xargs -d '\n' git update-index --chmod=+x
실행 가능한 플래그를 모든 파일로 설정 해제하려면 반대로 수행합니다.
git ls-files --stage | grep 100755 | cut -f2 | xargs -d '\n' git update-index --chmod=-x
그리고 모든 것을 설정합니다..sh 파일,방식일 수 . -http:-http://////////////////////////////. 다음과 같은 방법이 있을 수 있습니다.
git ls-files --stage | grep ".sh$" | cut -f2 | xargs -d '\n' git update-index --chmod=+x
Linux에서는 다음 작업을 수행해야 합니다.
set sudo chmod +x /path/to/file
로컬에서 git 업데이트를 하는 것 외에 로컬에서 git 업데이트를 하지 않으면 git는 항상 로컬 컴퓨터에서 기본적으로 설정된 인덱스를 644로 되돌립니다!
Windows Powershell에서 다음을 사용할 수 있습니다.
icacls .\path\to\file /grant Everyone:F
언급URL : https://stackoverflow.com/questions/40978921/how-to-add-chmod-permissions-to-file-in-git
'programing' 카테고리의 다른 글
| iOS 앱이 감옥에서 고장난 전화기에서 실행되고 있는지 어떻게 감지합니까? (0) | 2023.06.03 |
|---|---|
| Sqlite용 앱 내 데이터베이스 마이그레이션 모범 사례 (0) | 2023.06.03 |
| npm 설치로 devDependencies가 설치되지 않습니다. (0) | 2023.06.03 |
| 두 날짜 사이의 일 수 (0) | 2023.06.03 |
| 루비에서 시작, 구조 및 보장? (0) | 2023.06.03 |