2017-12-06 20 views
0

git clone의 이상한 동작이 발생합니다. git clone 바로 다음에 bitbucket에서 호스팅되는 git 저장소의 일부 파일이 수정됩니다. 이 문제는 다음과 같은 질문에보고 된 것과 비슷 git clone은 재생 불가능한 방식으로 파일 유형과 내용을 수정합니다.

  • Git status shows files as changed even though contents are the same
  • Files showing as modified directly after git clone
    • 하지만 꽤 같은 보이지 않는다. 내 경우에는 약 2 천 개 중 2 개의 파일 만 수정됩니다. 의 수정을 git clone 바로 뒤에 감지했습니다. 이 수정 된 파일은 원래 ASCII 인코딩 텍스트 파일 있었지만, file 명령을 가리 켰을 때, 복제 후 그들은, 이진 파일로 간주되었다 : t_pot_2e_fft002.f90 수정할 수 발견 된 파일입니다

      [email protected] $ file -bi t_pot_2e_fft002.f90 
      text/plain; charset=us-ascii 
      
      [email protected] $ file -bi t_pot_2e_fft002.f90 
      application/octet-stream; charset=binary 
      

      .

      이 수정 된 파일에서

      , 몇 전부는 아니지만 쉼표 ,, 공백 의, 그리고 밑줄 _은 일부 비 ASCII 문자로 대체되었다,하지만 난 여전히 less 명령 또는 이맥스하여 파일의 대부분을 읽을 수 있습니다 .

      다른 로컬 디렉토리에 6 번 복제를 반복했고 수정본을 2 번 보았습니다. 나머지 4 번에는 수정이 없었습니다. 파일이 수정 된 2 가지 경우에서 수정 된 파일은 사례마다 다릅니다.

      machine-originalmachine-original2 (더 이상 액세스 할 수 없음) 리포지토리에서 bitbucket의 원격 리포지토리로 푸시하고 가져 오는 작업을했습니다. 이제 bitbucket에서이 저장소를 machine-new에 복제하고 있습니다. 자식 버전은 machine-original1.9.1이고 2.14.1machine-new에 있습니다. (편집 :. 우분투 machine-original 실행 14.04 및 machine-new 실행 우분투 17.10) 나는이 문제를 인식 할 때까지

      나는 machine-originalcore.filemode=true했다. 그런 다음이를 false로 변경했지만 효과를 원격 저장소에 전파하는 방법을 모르겠습니다. git push을 수행했지만 Everything up-to-date 만 가져 왔습니다.

      위의 질문 중 하나에 an answer에 언급 된 .gitattributes 파일이 없습니다.

      누구나 이러한 복제 불가능 복제가 복제 된 이유를 설명 할 수 있습니까? 바로 뒤에 git status으로 수정이 감지되지 않으면 복제 된 저장소를 계속 사용하는 것이 안전합니까?

    +0

    신품 및 기계 고유의 OS 또는 OS가 다른가요? 일반적으로 다른 OS의 경우 다른 방식으로 파일을 인코딩합니다. –

    +0

    코멘트 주셔서 감사합니다. machine-original은 우분투 14.04이고 machine-new는 우분투 17.10입니다. – norio

    +0

    두 컴퓨터에서 명령을 개별적으로 실행할 때'hexdump -bc t_pot_2e_fft002.f90' 명령에 대한 출력이 같거나 다를 수 있습니까? –

    답변

    0

    별도의 컴퓨터에서 나온 hexdump -bc t_pot_2e_fft002.f90 출력이 다르므로 인코딩이 다르다는 의미입니다. 어쩌면 파일이 일종의 인코딩을 사용하는 다른 시스템에서 푸시되었을 때, 그리고 다른 시스템으로 복제본을 복제 할 때 다른 방식으로 인코딩됩니다.

    인코딩에 대한 자세한 내용은 Dealing with inconsistent or corrupt character encodings을 참조 할 수도 있습니다.

    core.filemodefalse으로 설정하면 파일을 실제로 변경하지 않고 "원래 인코딩을 무시"합니다.작업 트리에서 파일의 실행 비트가 영광해야하는 경우

    이 망할 놈의 지시

    core.fileMode : core.filemodefalse으로 그리고 상황에, 당신은 더 나은 설정 한 것입니다.

    실행 파일이 으로 표시된 파일을 체크 아웃하거나 실행 비트가 인 실행 불가능 파일을 체크 아웃하면 실행 파일이 손실되는 파일 시스템이 있습니다. git-clone 1 또는 git-init 1 파일 시스템을 조사하여 으로 지정합니다. 실행 비트를 올바르게 처리하는지 확인하고 필요한 경우이 변수는 으로 자동 설정됩니다.

    저장소는하지만, 제대로 파일 모드를 처리하는 파일 시스템에있을 수 있고, 만들 때이 변수가 true로 설정되어 있지만 나중에 가 파일 모드를 잃고 다른 환경에서 액세스 할 수 있습니다 (예 : ext4에 수출 CIFS 마운트를 통해 Cygwin 작성된 저장소 (Git for Windows 또는 Eclipse)를 방문하십시오. 이 경우이 변수를 false로 설정하려면 이 필요할 수 있습니다. git-update-index 1을 참조하십시오.

    기본값은 true입니다 (core 파일 모드가 config 파일에 지정되지 않은 경우).

    자세한 내용은 core.fileMode을 참조하십시오.