2011-04-18 3 views
0

이는 그럼 호스팅 회사가 www.hostingcompany.comwww.hostingcompany.com/~/mysite.com에서 소스 코드를 관리하기위한 훌륭한 Git 전략은 무엇입니까?

라고 내가 그것에 ssh를 할 때, 나는 ~에서 오전 주시면 좋은 힘내 무엇

~/mysite.com 
~/any_other_folders 

을 볼 수 Cannot git clone a folder on a server and then edit and git push?

관련이있다 워크 플로우 버전을 ~/mysite.com에있는 모든 소스 코드를 제어하고 내 로컬 PC에 git clone 수 있습니까? 로컬로 수정 한 다음 한 줄을 실행하고 repo로 이동하고 모든 코드를 ~/mysite.com에 최신으로 유지하려면?

로컬 PC에서 을 ~/mysite.com으로 바꾸는 것이 좋습니다. 나는 모든 것이 sync'ed인지 알기가 더 어렵 기 때문에 그렇게하지 않는 것을 선호한다.

+0

가능한 복제본 [[서버에서 폴더를 복제하고 편집하고 git push 할 수 없습니까?] (http://stackoverflow.com/questions/5703324/cannot-git-clone-a-folder-on-a-) server-and-then-edit-and-git-push) –

답변

2

당신이 이미 그것을받은 related question에서 바로 답을 복사 :

  1. 베어 저장소 (mysite.com.git) 및 비 베어 저장소 (mysite.com를) 확인 :

    당신은 두 가지 옵션이 있습니다. 베어 저장소에서, 당신은 -s 플래그 베어 하나를 복제 또는 모든 데이터를 복사 방지하기 위해 이후 .git/objects/info/alternates를 설정하여 비 베어 저장소를 만들 수 있다는 것을, git --git-dir=.../mysite.com pull

    주에 post-update 후크를 추가 할 수 있습니다.

  2. 만들기 하나 개의 저장소 및 :

    1. 분리 머리 : git checkout [email protected]{0}

    2. git merge master

    post-update 훅을 추가 여기에 그 이유는 자식 수정을 거부하다 체크 아웃 된 브랜치가 있지만 브랜치를 체크 아웃하지 않으면 푸시 할 수 있습니다. 그리고 작업 디렉토리를 후크에서 업데이트 할 수 있습니다 (후크는 저장소의 hooks 디렉토리에있는 스크립트입니다). 별도의 브랜치를 만들고 체크 아웃하거나 "detached HEAD"상태를 사용할 수 있습니다 (위에 제안 된대로 — git은 브랜치를 가리키는 특별한 참조 "HEAD"를 가지고 체크 아웃 된 브랜치를 기억하지만 if 당신은 지점이 아닌 무언가를 확인합니다. 직접 개정판을 가리키게됩니다. 그것은 "분리 된 지점"으로 불려지며, 어떤 지점도 체크 아웃되지 않았으므로, 어느 지점 으로든 가게 할 수 있습니다).

  3. 만들기 단지 하나 개의 저장소 및 : 푸시 - 투 - 체크 아웃 분기 체크 해제

    1. 켭니다.

    2. 밀어 넣을 때 분기를 다시 점검하려면 git reset --hardpost-update 후크를 추가하십시오.

    이 옵션은 푸시 할 때마다 로컬 변경 사항을 무시하기 때문에 읽기 전용 액세스에만 유효합니다.

그냥 확인하고 읽기 전용으로, 두 번째 옵션이 약간 더 효율적입니다,하지만 당신은 작업 디렉토리에 다른 명령을 실행하는 경우, 첫 번째 안전 액세스가 있다면 (당신이 닦아 다시 수 주 repo에 대해 걱정하지 않고 작업 복사본을 만듭니다.) this question을 참조하십시오.

편집 : 세 번째 옵션이 추가되었습니다.

+0

는 디렉토리 또는 파일 인'mysite.com.git'입니까? 우리는'mkdir mysite.com.git','cd mysite.com.git','git init --bare','cd ../ mysite.com' 그리고'git init','git 추가 .','git commit -m "ok"','git push ../mysite.com.git master'? –

+0

첫 번째 옵션이 가장 좋습니다. 제 생각에 – manojlds

+0

@ mysql.com.bit는 베어 리포 지 토리이므로 디렉토리입니다. 예, 당신이 말하는 것처럼 그것을 만듭니다. bare repositories에'.git' 접미어를 붙이는 것이 일반적입니다. –

관련 문제