답변:
몇 가지 일이 여기에 있습니다.
의 sudo git checkout ...
경우 루트 사용자 및 루트 그룹이 모든 파일을 소유합니다. 표준 권한을 사용하면 해당 파일에 대한 후속 변경이 루트가되어야합니다.
/var/www/
기본적으로 www-data
그룹 이 소유합니다 . 기본적으로 사용자가 아닌 것입니다.
에서 쓸 수있는 가장 쉬운 방법은 /var/www/
바로하는 것입니다 www가 데이터 그룹에 사용자를 추가합니다 . 물론 사용자가 소유 한 디렉토리를 변경할 수는 있지만 선점하지 않으면 불쾌한 영향을 줄 수 있습니다.
www-data 그룹에 사용자를 추가 한 후 다시 로그인해야합니다.
귀하의 경우에는 구체적으로 루트 소유 데이터의 현재 혼란을 해결해야합니다. 루트로 삭제하고 다시 체크 아웃 할 수 있지만 저장하지 않은 작업이있는 경우 모든 항목을 사용자에게 다시 가져 오는 것이 더 깨끗합니다. 다음 예제는 매우 게으 르며 우리가 이야기하는 것이 / var / www /의 유일한 것이라고 가정합니다.
sudo chown -R www-data: /var/www/
.git
디렉토리 에 체크 아웃하는 것에 대한 당신의 말은 정확합니다. 사람들에게 디렉토리에 대한 액세스 권한을 부여하면 사람들이 액세스 하지 못하게하려는 것들에 대한 액세스 권한을 부여 할 수.git/
있지만 전체 문제를 완화시키는 디렉토리에 대한 액세스를 막을 수 있습니다 .
흠, 폴더 소유자를 변경 하시겠습니까? www 폴더를 / home / username으로 옮겼습니다. / etc / apache2 / sites-enabled / 000-default에서 위치를 변경할 수 있습니다.
/var/www
으로 쓸 수 없습니다.
나는이 답변에 약간 늦었지만, repo를 https에서 ssh로 변경해야 할 때마다 암호를 입력하지 않도록한다는 것을 알았습니다.
Github.com 도움말 섹션에서 :
git remote set-url 명령은 기존 원격 저장소 URL을 변경합니다.
터미널을 엽니 다.
현재 작업 디렉토리를 로컬 프로젝트로 변경하십시오.
변경하려는 리모컨의 이름을 얻으려면 기존 리모컨을 나열하십시오.
git remote -v
origin https://github.com/USERNAME/REPOSITORY.git (fetch)
origin https://github.com/USERNAME/REPOSITORY.git (push)
git remote set-url 명령을 사용하여 원격 URL을 HTTPS에서 SSH로 변경하십시오.
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
원격 URL이 변경되었는지 확인하십시오.
git remote -v
# 새로운 원격 URL 확인
origin git@github.com:USERNAME/REPOSITORY.git (fetch)
origin git@github.com:USERNAME/REPOSITORY.git (push)
sudo git checkout
다른 디렉토리에 넣은 다음 / var / www 디렉토리에 내 응용 프로그램을 배포 하는 것이 낫 습니까? 나는 어딘가에서 프로젝트를 var 디렉토리로 체크 아웃하는 것이 좋지 않다는 것을 읽었습니다. 한 사람이 프로젝트를 홈 디렉토리에 체크 아웃 할 것을 권장했습니다