리눅스 환경에서 Git pull은 파일의 소유자를 바꾼다 있습니다 chown john:john

git pull라이브 서버에서를 실행할 때마다 파일 소유자가 변경되는 이유는 무엇 입니까? 나는 수동으로 계속하고 있습니다 chown john:john index.php.

을 수행 할 때 git pull파일 소유자가 자동으로 유지 되도록하려면 무엇을 변경해야 john합니까?



답변

git pull(와 동등한 git fetch; git merge) 를 사용하면 git은 소유자를 변경하지 않고 파일을 업데이트합니다 (git은 해당 정보를 저장하지 않습니다). 그러나 만들 새 파일이 있으면 현재 사용자가 소유자로 설정됩니다.

이것을 해결하는 다른 해결책이 있습니다. 병합 / 풀 후 자동으로 호출 post-update할 후크 ( .git/hooks디렉토리에) 를 추가하는 것이 더 쉽습니다 chown john:john . -R( 예를 들어 SO 솔루션 참조 ).

대체 솔루션은 다음과 같습니다.

  • git pullroot 대신 john 사용자로 실행하십시오 (.git 디렉토리에 대해 john에 대한 쓰기 권한이 필요함).
  • john을 사용자로 사용하거나 업데이트 후 chown을 수행하는 배치를 작성하기위한 후크를 작성하십시오 ( 맨손 저장소 git pullpost-receive후크 내부에서 수행해야 함 ).

답변