2012-08-06 2 views
3

git에 상당히 익숙하며 프로덕션 환경에 배포 할 때 모범 사례가 궁금하십니까? 나는 항상 생산을위한 최신 버전의 코드를 가지고있는 master 브랜치를 가지고있다. 내가 생산을 떠올리면 (지금은 수동으로) git pull을 입력하고 최신 버전을 구하십시오. 하지만 을 병합하여 코드을 작성하려고합니다. 때로는 충돌이 발생합니다. 마스터 브랜치에있는 모든 것을 그대로 가져가는 방법이 있습니까? git + 프로덕션에 배포

나는이 포함에 많이 읽기 시도 :

Best solutions to deploy from git to production?

http://posheika.net/?p=136

+1

웹 서버에 리포를 노출시키지 않고 원격 웹 서버에 git 프로젝트를 안전하게 배포하는 방법에 대해 배웠던 것을 확인할 수 있습니다. http://stackoverflow.com/a/18941021/470749 – Ryan

답변

3

시도 당기 대신 git fetch origingit reset --hard whatever_deployment_branch_you_use를 사용합니다.

이렇게하면 저장소에서 코드를 병합하지 않으므로 서버에서 충돌을 피할 수 있습니다.

0

이 작업을 수행하는 간단하고 신뢰할 수있는 방법은 모든 개발이 이루어지는 지점 인 master 분기를 사용하는 것입니다. 분기의 용도를보다 정확하게 반영하려면이 분기의 이름을 development으로 변경할 수 있습니다.

그런 다음 실제 운영 환경에서 현재 실행중인 내용을 항상 반영하는 다른 production 분기가 있습니다. 프로덕션에 배포하려는 경우 production 지점을 체크 아웃하고 git merge master을 실행하십시오. master의 커밋 SHA에 태그를 적용하여 배포 한 지점을보다 쉽게 ​​볼 수 있습니다.

이렇게하면 개발 상자에서 모든 병합 충돌을 수정하고 생산 상자에서 git pull을 실행하면 production에서 최신 버전을 가져옵니다.

Here은 위의 흐름에 대한 더 멋진 (그리고 잠재적으로 더 복잡한) 대안입니다. 여러 개발자가 있거나 더 복잡한 릴리스주기가 필요한 경우이 방법을 사용하십시오.

+0

문제는 'git pull '을하고, 브랜치를 병합하려고 할 때 충돌을 계속 일으킨다. – KVISH

+0

프로덕션 서버에서 커밋되지 않은 변경 사항이 있기 때문에 그런 것 같습니다. Frost 캐스트가 수행 할 작업에 대한 최상의 조언을 제공했습니다. 프로덕션 환경에서 직접 변경 (일반적으로 나쁜 아이디어)을 한 경우 커밋 한 다음 개발 분기로 다시 병합하십시오. – jnevelson

+0

? 나는 프로덕션을 변경하지 못했습니다 ... 저는 브랜치에 많은 변화가 있습니다. 그리고'git pull'을 할 때, 그 변화를 가져 와서 현재 생산중인 것과 합병하려고 시도합니다. – KVISH

관련 문제