2011-03-24 2 views
6

두 컴퓨터 A와 B가 있습니다. 두 개의 분기 p16과 c2가 있습니다.Git diff가 로컬 모드의 변경 사항을 '이전 모드'/ '새 모드'로보고합니다.

A는 ext3 파일 시스템을 가지고 있지만, B의 아카이브가 VFAT과의 TrueCrypt 드라이브에 살고, 마운트 RW, UID = 1000을 보여주고, GID = 1000, umask를 = 077

A는 B의 디렉토리 트리를 연결했다 sshfs를 사용하여 디렉토리 트리에 넣은 다음 A가 파일 시스템을 사용하여 B의 p16으로 푸시됩니다.

B$ git status 
# On branch p16 
nothing to commit (working directory clean) 
B$ git checkout c2 
Switched to branch 'c2' 
B$ git checkout p16 
error: You have local changes to 'help.txt'; cannot switch branches. 

자식 사랑하는 나에게 보여 이제 모든 파일의 변경된 모드 :

지금 일부 권한 문제가있는

B$git diff 
diff --git a/help.txtt b/help.txt 
old mode 100644 
new mode 100755 
diff --git a/169.txt b/169.txt 
old mode 100644 
new mode 100755 
... 
(a list with all files having their mode changed follows) 
... 

나는 문제가 로컬 파일 시스템이 VFAT의 TrueCrypt를인지 추측 컨테이너와 파일 시스템은 다른 머신이 기대하는 권한을 허용하지 않습니다.

다른 파일 시스템으로 2 대의 기계를 더 잘 연결할 수있는 아이디어가 있습니까?

+0

그냥 추측 하시겠지만 분기 p16에서 .gitignore를 사용하여 변경된 파일을 무시합니까? – coreyward

+0

p16에는 2 줄의 gitignore가 있습니다. 업데이트 된 질문보기 – mit

+1

Windows? 그것은 당신이 묘사하는 것처럼 많은 고통을 가져 오는'x' 비트가 부족합니다. –

답변

8

운영 체제의 파일 권한이 해당 위치에서와 같이 작동하지 않는 경우 git를 사용하면 이러한 문제가 발생할 수 있습니다. 예를 들어, 외부 파일 시스템이 마운트 된 경우. 그냥 당신이 줄 .git에서

filemode=false 

/것이다 설정합니다 ([core] 섹션 내)이 있는지 확인

:

이 솔루션은 위의 질문에 대한 자신의 의견에 meagar에 의해 지적되었다 git이 추적중인 파일의 실행 비트를 무시하도록 명령하십시오.

는 또 다른 터미널 및 형식 자식의 repo의 루트 디렉토리로 이동하는 것 같은 일을하는 방법

:이 설정을 변경하면 가끔 필요하다고

git config core.filemode false 

참고하지만, 그렇지 않으면 더 낫다 기본 동작을 유지합니다. git이 파일 권한을 올바르게 추적하는 것이 중요하므로 프로젝트가 제대로 작동 할 수 있습니다.

+0

이것은 위험한 것처럼 보입니다. 이것은 또한 확실히 나의 지식 영역에서 벗어났습니다. git에서이 작업을 수행 할 때 발생할 수있는 영향은 무엇입니까? – dudewad

관련 문제