[Git] Git을 이용한 협업 Workflow
Git Workflow란?
팀원들이 Git을 각자의 역할에 맞게 바운더리를 설정하여 더욱 확실하고 체계적으로 사용할 수 있게 도와주고 이를 통하여 팀이 더 효율적이고 효과적으로 일할 수 있게 도와주는 것입니다.
Git Workflow를 통한 협업 방법
1.프로젝트 Clone
프로젝트를 Local로 Clone합니다.
1
git clone [Clone할 Repository URL]
2.작업을 위한 develop 브랜치 생성
우선 develop 브랜치를 생성합니다. 그리고 git branch를 저장소로 push 해줍니다.
1
2
git branch develop
git push origin develop
3.develop/* 하위 브랜치 추가 생성
이제 develop 브랜치 밑으로 새로운 브랜치를 1개 더 만들어야 합니다. 본인이 맡게되는 역할에 맞게 만들면 됩니다. 예를 들면 새로운 기능을 추가하려면 feature로 만드는 식으로 하면 됩니다. 다만 feature 브랜치같은 경우엔 develop 밑의 하위 브랜치로 만들어야하기 때문에 아래 코드와 주석을 참고해서 작성해야 합니다.
1
2
git branch feature develop //develop 브랜치 밑에 feature 브랜치를 생성
git checkout feature //feature 브랜치로 이동
혹은 브랜치 생성 이후 바로 이동하고 싶다면
1
git checkout -b feature develop // develop 브랜치 밑에 feature 브랜치를 생성하고 이동
4.작업 완료 이후 add / commit / push
이제 만약 작업을 완료한다면 add, commit, push를 해야합니다. 아래 순서대로 작업해줍시다.
1
2
git add * //전체 모두 add
git add [파일 이름] //특정 파일만 add
1
git commit -m "feat: 로그인 기능 추가"
1
git push origin feature
5.develop로 pull request / 검토 및 Merge
여기까지 하고 github로 들어가본다면 Compare & pull request 버튼이 활성화 되어있습니다. 이것을 누르고 메세지를 입력한 다음 Create pull request를 눌러줍니다. 그러면 관리자(혹은 선임)이 내역을 검토하고 develop으로 Merge를 할지 말지 결정합니다.
6.동기화 및 작업 완료한 Local branch 삭제
Merge가 완료되면 pull을 통하여 Repository와 Local의 코드를 동기화합니다. 그리고 작업을 완료한 브랜치는 삭제합니다.
1
2
git pull origin develop
git branch -d feature
7.출시 준비가 되면 main으로 dev 병합해주기
develop에서 모든 작업이 완료되면 main으로 병합해주면 됩니다. main에서는 history가 깔끔하면 좋으니 rebase를 사용해 보았습니다.
우선 develop 브랜치로 이동해줍니다.
1
git checkout develop
rebase main을 통하여 develop 브랜치를 main 브랜치로 옮겨줍니다.
1
git rebase main
※주의) 혹시나 이 과정에서 conflict가 발생한다면 보통은 git rebase –skip으로 넘기시면 됩니다. 그렇지만 잘 읽어보시고 만약 conflict를 수정해야할 부분이 있으시면
충돌 수정 시작 => 수정 완료 => Save => git add => git rebase –continue
를 통해 진행하시면 됩니다.
모든 과정이 끝나시면 다시 main 브랜치로 이동하고 이번엔 merge 해줍니다.
1
2
git checkout main
git merge develop
에러 & 해결법
1.만약 git pull origin develop을 하는 과정에서
fatal: ‘develop’ does not appear to be a git repository fatal: Could not read from remote repository.
가 발생한다면 main으로 checkout 이후 git remote set-url origin https://github.com/alexjungdev/alexjungdev.github.io.git를 한다음 다시 시도해봅시다. 저는 이 방법으로 해결을 했습니다. 링크는 본인에게 맞게 설정해주세요.