Git의 비 단계적 변경에서 “old mode 100755 new mode 100644″라는 파일을 어떻게 제거합니까? 살펴보면 변경된 내용을

어떤 이유로 든, 처음으로 git 프로젝트의 저장소에서 가져 왔을 때 작업 복사본에 상당한 변경 사항이 없지만 내 unstaged changes영역 에 계속 나타나는 많은 파일이 있습니다.

Windows XP에서 Git Gui를 사용하고 있으며 파일을 살펴보면 변경된 내용을 볼 수 있습니다. 내가 보는 것은 :

old mode 100755
new mode 100644

누구나 이것이 무엇을 의미하는지 알고 있습니까?

준비되지 않은 변경 사항 목록에서 이러한 파일을 가져 오려면 어떻게해야합니까? (최근에 편집하고 커밋하려는 파일을 선택하기 위해 100 개의 파일을 통과해야한다는 것은 매우 성가신 일입니다).



답변

그것은 나에게 유닉스 파일 권한 모드처럼 보입니다 ( 755= rwxr-xr-x, 644= rw-r--r--). 이전 모드에는 + x (실행 가능) 플래그가 포함되어 있지만 새 모드는 그렇지 않습니다.

이 msysgit 문제의 응답 은 문제를 제거하기 위해 core.filemode를 false로 설정하도록 제안합니다.

git config core.filemode false

답변

core.filemodefalse로 설정 하면 작동하지만의 설정이의 설정 ~/.gitconfig으로 재정의되지 않아야 .git/config합니다.


답변

오래된 하드 드라이브에서 작업 파일로 git repo를 두 번 복사 할 때이 문제가 발생했습니다. 문제는 소유자와 권한이 이전 드라이브 / 시스템에서 새 드라이브 / 시스템으로 변경 되었기 때문입니다. 길고 짧은 것은 다음 명령을 실행하여 문제를 해결하십시오 ( 이 수퍼 유저 답변 덕분에 ).

sudo chmod -R -x . # remove the executable bit from all files

이전 명령은 실제로 git diff가보고 한 차이점을 해결하지만 디렉토리를 나열하는 기능을 취소하므로 ls ./실패합니다 ls: .: Permission denied. 이를 해결하려면 다음을 수행하십시오.

sudo chmod -R +X . # add the executable bit only for directories

나쁜 소식은 .sh스크립트 와 같이 실행 가능하게 유지할 파일이 있으면 파일 을 되돌려 야한다는 것입니다. 각 파일에 대해 다음 명령을 사용하여이를 수행 할 수 있습니다.

chmod +x ./build.sh # where build.sh is the file you want to make executable again

답변

일반적으로 Windows와 Linux / Unix 시스템간에 저장소가 복제 될 때 발생합니다.

git에게 파일 모드 변경을 무시하도록 지시하십시오. 여러 가지 방법이 있습니다.

  1. 현재 리포지토리에만 구성 :

    git config core.filemode false
    
  2. 글로벌 구성 :

    git config --global core.filemode false
    
  3. ~ / .gitconfig에 추가하십시오.

    [core]
         filemode = false
    

그중 하나를 선택하십시오.


답변

디렉토리의 일부 권한을 변경 한 것 같습니다. 복원하기 위해 다음 단계를 수행했습니다.

$  git diff > backup-diff.txt                ### in case you have some other code changes

$  git checkout .

답변

git reset –hard HEAD를 시도하여 리포를 예상 기본 상태로 재설정 할 수 있습니다.


답변

나는 같은 문제에 직면했다. 그리고 이것은 내 생명을 구합니다 :
https://gist.github.com/jtdp/5443498

git diff -p -R --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never  \
| git apply`