2017-11-01 15 views
0

우리는 git 프로젝트 (모든 웹 사이트)에서 정확한 워크 플로를 얻으려고 애 쓰고 있습니다.GIT 워크 플로우 - 올바르게하기 위해 필요한 도움말/조언

우리는 5 DEVS (프론트 엔드 & 백엔드) 여러 작업에 각 프로젝트에서 수행되는 각 작업이 여러 DEVS에서 작업중인 한 번에 30 개 이상의 프로젝트를 진행 (& 베타 사이트 라이브 사이트)가 (일반적으로이 앞뒤로 프론트 엔드 사이 & 백엔드)

우리의 현재 흐름이 있습니다 :

베타 사이트의 기능을 마지막으로 클라이언트에 의해 승인
pull dev branch 
work on task 
commit to dev branch 
push dev 
deploy dev branch to staging site 
repeat ad infinitum 

:

cherry pick commit/commits in to master (We can not merge development branch in to master as there will be mulitple pieces of code in the development branch that are not ready for live.) 
push master 
deploy master to live 
Pray. 

이러한 커밋 중 일부는 클라이언트의 승인을 받기 전에 개발 분기에 수주 (심지어 몇 개월) 동안 앉을 수 있습니다. 이 시간까지 마스터 브랜치는 엄청나게 바뀌었고, "라이브"승인이 주어지면 개발자는 지정된 작업과 관련된 커밋을 기억할 수 없습니다! 또한 그때까지 그들이받는 분쟁의 양은 그들을 압도합니다.

일반적으로 "go live"작업은 1 dev에 주어 지지만 구체적인 작업에 대한 커밋이 무엇인지 알지 못합니다.

우리는 많은 기능을 위해 브랜치를 사용하고 있지만 잘 작동하는 것처럼 보일 수 있지만 시간이 지남에 따라 큰 변화가 생겨 분기가 전혀 생성되지 않을 수 있습니다.

아무도 저장소를 신뢰하지 않으므로 FTP에서 직접 수정되는 경향이있는 라이브 사이트에서 오류가 발생합니다. 또한 분실/겹쳐 쓰기 작업 중.

질문

GIT가 바로 우리를 위해인가?

다른 것을 사용해야합니까?

Google 프로세스가 올바로 작동하기 만하면됩니까?

+0

Git을 일부 CI 서버와 통합하여 빌드 및 배포를 관리하십시오. 또한 SourceTree와 같은 일부 타사 버전 제어 소프트웨어를 확인하여 모든 변경 사항을보다 잘 시각화하십시오. –

답변

1

staging 지점을 유지 관리해야합니다. master의 빠른 수정 인 경우 master에서 지점을 만들어야합니다. 이 코드를 staging에 병합하고 클라이언트 테스트를 위해 staging을 배포하십시오. 승인 후 stagingmaster에 병합하십시오.

빠른 수정이 아닌 경우 task-branchdev에서 만들고 staging에 병합해야합니다. 클라이언트 테스트 용으로 배포하고 go live 승인 후 master에 병합하십시오.

+0

"라이브 승인 후 마스터에서 병합 스테이징"- 라이브 준비가되지 않은 스테이징 항목이있는 경우 어떻게 작동합니까? – sulman

+1

아니요. 스테이징에는 준비가되지 않은 코드가 포함되어서는 안됩니다. 태깅을 사용하여 클라이언트 테스트를 위해 준비가 된대로 변경 사항에 태그를 지정할 수 있습니다. 특정 태그를 task/quick fix 브랜치의 스테이징으로 병합하고 클라이언트 테스트를위한 스테이징을 전개 할 수 있습니다. –

+0

'빠른 수정이 아니면 dev에서 task-branch를 만들고이를 완료 한 후에 준비에서 병합해야합니다. OP에서 지점을 시작한 이후 준비가 완료되지 않은 기능이 준비로 끝납니다 'dev', 아마도 전개 할 수없는 기능들을 포함하고있을 것입니다. – kowsky

0

당신에게 맞는 제품이지만, 워크 플로우를 최적화 할 수 있습니다.

사용 및 구성이 간단한 GitLab CI를 사용하십시오.

하위 분기의 변경 사항을 병합 할 지점 dev가 있어야합니다.

그래서 스키마는 같은 :

  • 데브을 준비

    • 마스터/생산성
      • 기능이

    개발자를위한 자녀 지점 개발하다 User-Product-Wishlist라는 기능을 사용하면 최신 Dev 분기에서 파생 된 user_product_wishlist 분기를 만들 수 있습니다. 일단 그가했으면, 그는 브랜치에서 Dev 브랜치로 pull/merge 요청을 만들 것이다. 우리는 조금 후에 이것을 보게 될 것이다.

    개발자가 작업을 끝낼 때까지 그는 여러 가지 커밋을 확실하게 푸시했습니다.
    서버에 마지막으로 푸시되기 전에 그는 오직 하나만 가지고 깨끗한 커밋을하기 위해 브랜치를 리베이스해야합니다. 좋은 하나는 그가 한 모든 변경 사항을 커밋 할 것

    git rebase -i HEAD~X 
    

    , 그것은되지 않습니다 :
    그는 (x는 커밋의 양이다) 그가 한 커밋하고 자식 명령을 실행의 양을 확인?

    git push origin user-product-wishlist -f 
    

    옵션이 REBASE 후 사용 항상 사용되는 --force (-f)을가 변경되기 때문에 :

    지금 우리의 기능의 커밋 역사는 그가 원격 지사에 일을 밀어 수있는 깨끗 타임 스탬프 이력을 커밋하여 서버에서 이전 버전을 재정의해야합니다.

    팀이 코드 검토를 마친 후 풀링/병합 요청을 수락 할 시간이 있거나 처리 할 수있는 다른 수표가 있습니다. 당신이있는 경우,

    git rebase origin/dev 
    

    해결 충돌을하지 않을 경우 당신 : 당신이 풀을 볼 경우 다른 디바이스가 그들의 dev에로 기능을 통합하기 때문에/충돌을 가진 요청을 병합, 그렇게, 원격 데브 분기 현재 분기를 리베이스해야 서버에 업데이트하기 위해 분기를 밀어 수 있습니다

    git push origin user-product-wishlist -f 
    

    지금 당신이/풀을 동의 요청을 병합하고 DEV 분기에 병합 할 수 있습니다. 당신이 더 쉬울 것이다 커밋 역사를 찾고 특정 버전으로 롤백해야하는 경우

    당신은 ... 청정도 등 병합 된 지점 이후, 개발 분기에 역사를 커밋

    계속됩니다!

    이제 테스트 할 여러 기능이있는 경우, 당신은/서로 다른 풀을 만들 서버에 요청 체크 아웃이 분기를 병합 할 수 있습니다

    준비 또는 생산에 배포 할 때까지의 최대 선택과 테스트되면 및 확인 후 병합 할 수 있습니다.