공유 호스팅에서 동일한 웹 호스팅 서비스로 호스팅되는 사이트가 몇 군데 있습니다. 내 웹 호스트는 Git을 지원하며 SSH 액세스 권한이 있으며 랩톱에도 Git 설정이 있습니다.
"git push origin master"를 수행 할 때 웹 서버의 파일을 자동으로 업데이트하고 이전 커밋 파일의 백업을 저장하여 원하는 경우 쉽게 롤백 할 수 있도록 만들고 싶습니다. 이게 가능해?
공유 호스팅에서 동일한 웹 호스팅 서비스로 호스팅되는 사이트가 몇 군데 있습니다. 내 웹 호스트는 Git을 지원하며 SSH 액세스 권한이 있으며 랩톱에도 Git 설정이 있습니다.
"git push origin master"를 수행 할 때 웹 서버의 파일을 자동으로 업데이트하고 이전 커밋 파일의 백업을 저장하여 원하는 경우 쉽게 롤백 할 수 있도록 만들고 싶습니다. 이게 가능해?
답변:
이것은 Git을 사용하여 웹 사이트 관리 에서 요약 됩니다.
프로세스의 핵심은 서버 측 후크 '포스트 수신'입니다 ( Git-Git 후크 사용자 정의 및 githooks 매뉴얼 페이지의 git 후크에 대한 자세한 내용 참조 ). 이 후크는 서버가 모든 데이터를 수신 한 후에 실행됩니다.
서버가 데이터를 수신하면 서버는 git checkout -f
-f 옵션을 실행 하여 로컬 차이가 있더라도 헤드에 체크 아웃합니다.
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
hooks/
디렉토리에 post-receive
실행 파일을 넣으십시오 . 물론 경로는 웹 서버 파일이있는 위치로 변경됩니다 (이를 사용 GIT_WORK_TREE
하면 환경 변수를 설정하여 서버에서 도트 파일과 자식 설정을 저글링 할 필요가 없습니다).
롤백하려면 각 릴리스에 태그를 지정해야합니다 (이는 커밋 후 후크의 일부로 수행 될 수도 있음). 릴리스에 태그를 지정하면 롤백 할 스팟을 쉽게 식별 할 수 있지만 서버에 로그인하고 해당 태그를 체크 아웃해야합니다.
post-receive
넣을 수있는 스크립트 일뿐입니다.
푸시하려는 저장소의 작업 트리를 업데이트하는 가장 간단한 방법
git config receive.denyCurrentBranch updateInstead
은 수신자 측에서 설정
하는 것입니다. https://git-scm.com/docs/git-config/#git-config-receivedenyCurrentBranch를 참조
하십시오
포스트 커밋 후크가있는 Ryan의 대답은 다른 위치를 체크 아웃 할 수 있다는 점에서 더 좋습니다 (웹 폴더에 .git을 원하지 않을 것입니다). 그러나이 수준에서는 의견에서 sleske가 말한 것처럼 기존 배포 도구를 사용하는 것이 좋습니다.