source

Windows에서 Git에서 파일 실행 모드 권한을 만드는 방법은 무엇입니까?

gigabyte 2023. 4. 9. 21:32
반응형

Windows에서 Git에서 파일 실행 모드 권한을 만드는 방법은 무엇입니까?

Windows에서 Git을 사용하고 있는데 실행 가능한 셸 스크립트를 git repo에 1회 커밋하고 싶습니다.

통상, 2개의 스텝을 실행할 필요가 있습니다(git commit).

$ vi install.sh
$ git add install.sh  
$ git commit -am "add new file for installation" # first commit
[master f2e92da] add support for install.sh
 1 files changed, 18 insertions(+), 3 deletions(-)
 create mode 100644 install.sh
$ git update-index --chmod=+x install.sh
$ git commit -am "update file permission"        # second commit
[master 317ba0c] update file permission
  0 files changed
  mode change 100644 => 100755 install.sh

어떻게 하면 이 두 단계를 한 단계로 통합할 수 있을까요?git 설정?windows 명령어?

레퍼런스: 두 번째 커밋에 대해서는 Windows의 Git 파일 권한 질문을 참조하십시오.

이 작업은 2개의 커밋으로 수행할 필요가 없습니다.파일을 추가하고, 1개의 커밋으로 실행 가능한 마크를 붙일 수 있습니다.

C:\Temp\TestRepo>touch foo.sh

C:\Temp\TestRepo>git add foo.sh

C:\Temp\TestRepo>git ls-files --stage
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       foo.sh

주의하신 바와 같이 추가 후 모드는 0644(실행할 수 없음)입니다.단, 커밋하기 전에 실행 가능한 것으로 표시할 수 있습니다.

C:\Temp\TestRepo>git update-index --chmod=+x foo.sh

C:\Temp\TestRepo>git ls-files --stage
100755 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       foo.sh

이것으로, 파일은 모드 0755(실행 가능)가 됩니다.

C:\Temp\TestRepo>git commit -m"Executable!"
[master (root-commit) 1f7a57a] Executable!
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 foo.sh

이제 단일 실행 파일이 포함된 단일 커밋이 있습니다.

정말이지, 정말이지git-add가 있었다--mode깃발

git 2.9.x/2.10(2016년 3분기)은 실제로 (Edward Thomson 덕분에) 다음을 가능하게 합니다.

git add --chmod=+x -- afile
git commit -m"Executable!"

그 때문에, 모든 프로세스가 고속으로 되어,core.filemodefalse로 설정되어 있습니다.

Edward ethomsonThomson()의 4e55ed3(2016년 5월 31일)을 참조하십시오.
도움 : 요하네스 쉰델린()dscho
(2016년 7월 6일 Junio C Hamano의해 병합됨----commit c8b080a에서)

add: 추가--chmod=+x/--chmod=-x옵션들

실행 가능 비트는 저장소 내의 경로에 대해 검출되지 않으므로 설정되지 않습니다.core.filemodefalse로 설정됩니다.다만, 유저는, 다른 유저와의 호환성을 위해서, 파일을 실행 가능한 파일로 추가하고 싶은 경우가 있습니다.core.filemode기능성.
예를 들어 셸 스크립트를 추가하는 Windows 사용자는 Windows 이외의 사용자와의 호환성을 위해 셸 스크립트를 실행 파일로 추가할 수 있습니다.

이것은 배관 명령으로 실행할 수 있지만(git update-index --add --chmod=+x foo명령어를 티칭하면 사용자는 이미 익숙한 명령어로 파일 실행 파일을 설정할 수 있습니다.

파일에 +x 플래그가 이미 설정되어 있는 경우git update-index --chmod=+x플래그가 repo에 저장되지 않은 경우에도 git은 커밋할 것이 없다고 생각합니다.

먼저 플래그를 제거하고 git 명령을 실행한 다음 플래그를 다시 넣어야 합니다.

chmod -x <file>
git update-index --chmod=+x <file>
chmod +x <file>

그러면 git이 변경을 확인하고 변경을 커밋할 수 있습니다.


커밋에 필요한 git 설정(신용:Nabi의 답변:

git config core.filemode false

cloner에 필요한 git 구성:

git config --global core.autocrlf input

주의할 점은 우선 다음 사항에 대해 확인해야 한다는 것입니다.filemodefalse츠키다

git config core.filemode false

다음으로 다음 명령을 사용하여 0777 권한을 설정할 수 있습니다.

git update-index --chmod=+x foo.sh

이 없다touch ★★★★★★★★★★★★★★★★★」chmod명령어로 합니다.git update-index --chmod=+x foo.sh나한테는 안 통한다.

설정함으로써 최종적으로 해결합니다.skip-worktree 삭제:

git update-index --skip-worktree --chmod=+x foo.sh

이 작업을 수행하기 위해 제가 해야 할 일은 다음과 같습니다.

  1. GitHub Desktop을 사용하여 커밋하지 않으면 변경을 인식하지 못하기 때문에 커밋하지 않습니다.
  2. ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.git add --chmod=+x foo.sh
  3. ★★★★★★★★★★★★★★★.git commit -m"Executable!"

다른 , 이이 여러분의 에일리어스에 이 될 수 ..gitconfigfilename을 클릭합니다.

…
[alias]
  …
  stage = add
  stagex = add --chmod=+x
  unstage = restore --staged
  setmodx = update-index --chmod=+x

stagex실행 가능 권한 비트가 설정된 파일을 추가합니다. setmodx는 이미 스테이징되었거나 커밋된 파일에 대한 실행 권한을 활성화합니다.다른 별칭은 이 두 가지가 어떻게 들어맞는지를 보여주기 위해 붙여진 것입니다.

언급URL : https://stackoverflow.com/questions/21691202/how-to-create-file-execute-mode-permissions-in-git-on-windows

반응형