2012-01-12 2 views
20

외부 하드 드라이브에 복사하여 다른 git 저장소로 이동했습니다. 그리고 지금 내가 git diff 할 때 모든 파일 모드가 변경되었다고보고합니다.저장소를 옮긴 후 git diff보고 모드가 변경됩니다.

diff --git a/.gitignore b/.gitignore 
old mode 100644 
new mode 100755 
diff --git a/.npmignore b/.npmignore 
old mode 100644 
new mode 100755 
diff --git a/.travis.yml b/.travis.yml 
old mode 100644 
new mode 100755 
diff --git a/LICENSE b/LICENSE 
old mode 100644 
new mode 100755 
diff --git a/README.md b/README.md 
old mode 100644 
new mode 100755 

필자는 파일 사용 권한에 대해 많이 알지 못하지만, 이에 대해 어떻게해야합니까?

모드 변경을 적용 하시겠습니까? 실행 불가능한 모든 파일에 대해 모드를 다시 변경 하시겠습니까? 자식 재설정?

+0

에서 OS 및 OS에에 @ 칸의 대답에서 발견되었다? –

+0

Xubuntu to Crunchbang Linux – fent

답변

11

아마 외장 하드 드라이브에 원본 ​​파일 권한을 존중하지 않는 다른 파일 시스템이있을 수 있습니다. 내가 커밋하기 전에 손으로 그들을 바로 고칠 수 있습니다.

예를 들어, USB 썸 드라이브에서 일반적으로 사용되는 FAT32는 실행 권한을 지원하지 않습니다. FAT32 파일 시스템에서 일반 유닉스 계열 파일 시스템으로 파일을 복사 할 때 일반적으로 모든 파일에 대해 실행 권한을 설정합니다. 모든 파일에 대해 실행 권한을 설정하는 것은 피해를 덜주기 때문입니다.

그런 종류의 정보를 유지하려면 파일을 드라이브에 직접 복사하지 마십시오. 대신 tar 파일 (선택적으로 압축)을 만든 다음 다른 끝에 압축을 풉니 다. tar 형식은 Unix 권한 비트를 추적합니다.

git 자체는 실행 가능 파일과 실행 불가능 파일을 추적하지 않습니다. 모드 변경이 유일한 차이 일 뿐이고 모든 것을 다시 복사하지 않으려는 경우 git diff의 출력을 스크립트로 변환하여 모든 영향을받는 파일에서 chmod -x을 수행 할 수 있습니다.

+0

그렇다면 다른 방법으로 다시 전송 해 드리겠습니다. 모든 것을 파일로 압축하려고합니다. 그 방법으로 모든 파일을 손으로 수정하고 있습니다. – fent

+0

아니면 더 똑똑한 파일 시스템으로 외장 디스크를 다시 포맷하십시오. 어떤 FS가 /에서 가고 있으며, 포맷 된 외부 디스크는 무엇입니까? –

+1

from/to : ext4, 외부 : ntfs – fent

39

당신은 파일 모드의 차이를 무시하는이 원인

git config core.filemode false

설정 자식을 적용 할 수 있습니다.

이 솔루션

another question

+1

@ 이 질문은 Q에서 언급 할만한 가치가있는 정답 IMO로 표시되어야합니다. –

관련 문제