2017-03-23 2 views
0

내가 이것을 위해 나는 REPO을 만들어 지금 --bare왜 원격 저장소에 변경 사항이 반영되지 않습니까?

cd /var 
    mkdir demorepo && cd demorepo 
    mkdir demo.git && cd demo.git 
    git init --bare 

와 함께 시작하는 VPS (A 디지털 오션 물방울)에 배포하는 설치 추진에 노력하고는 REPO에 후크 디렉토리에 post-receive라는 훅을 만들어 내 로컬 컴퓨터에

chmod +x post-receive 

를 사용

#!/bin/sh 
git --work-tree=/var/www/demo --git-dir =/var/demorepo/demo.git checkout -f 

설정 권한은 새로운 창조 폴더 \www\demo.gitgit init와 REPO 및가 이제 I 로컬 REPO 새로운 파일을 생성하고

git push live master 

푸시를 사용하여 가압 live

git remote add live ssh://[email protected]/var/demorepo/demo.git 

같은 문제점을 원격 REPO 추가 하지만 변경 사항은 원격 저장소에 반영되지 않습니다. 내가 뭘 잘못 했니?

+1

스크립트를 수동으로 실행하면'/ var/www/demo'에서 작업 폴더를 업데이트합니까? 예를 들어,'--git-dir' 다음에 공백을 추가하는 것이 의도적입니까? –

+0

나는 그것을 시도하지 않았다. 나는'#!/bin/sh'의 의미를 이해하지 못하기 때문에. (나는 그것을 튜토리얼을 따라 작성했다.) (수동으로 실행하는 동안'#!/bin/sh'을 의미하는 것을 이해할 수 있도록 도와 주시겠습니까?) –

+2

먼저 git 명령을 독립 실행 형으로 실행해야합니다. 그러면 post-receive에 배치 할 수 있습니다 스크립트. 명령이 독립형으로 작동하지 않으면 스크립트가 작동하지 않습니다. –

답변

1

후크가 제대로 작동하도록하려면 명령을 수동으로 실행하여 "디버깅"해야합니다.

수동으로 작동 시키면 후크 스크립트에 넣을 수 있습니다.

이 특정 질문에 나는 명령이 오류 메시지와 함께 실패 기대 :

fatal: Not a git repository: '=/var/demorepo/demo.git' 

그 이유는 당신이 실수로 --git-dir 매개 변수 다음에 공백을 추가 한 것입니다.

git --work-tree=/var/www/demo --git-dir =/var/demorepo/demo.git checkout -f 
            ^
             | 
             +-- here 

해당 공간을 제거하면 잘 보내야합니다.

다음과 같은 두 가지 변종이 동일로 당신은 또한 동일한 기호를 제거 할 수 있습니다 :

--git-dir=x 
--git-dir x 

하지만 등호는 시도를 이눔 경로의 일부입니다 귀하의 경우와 같이 두 가지를 결합 할 수 없습니다 따라서 오류를 찾습니다.

관련 문제