이전 포스트에서는 Git과 GitHub을 사용하는 방법을 간단하게 설명했습니다.
이번 포스트에서는 Git을 이용하여 버전 관리 또는 다른 개발자들과 협력하는 방법에 대해서 설명하겠습니다.
# 목차
# Git을 이용한 협업 워크플로우
Master : 배포 이력을 관리하기 위한 브랜치(태그로 관리)
Hotfix : 제품을 배포한 후 발견된 버그 등을 수정하기 위해 임시로 사용하는 브랜치
Release : 제품을 배포하기 위해 준비를 하는데에 사용하는 브랜치
Develop : 개발이 완성된 기능(Feature)들을 병합하기 위한 브랜치
Feature : 기능을 개발하기 위해 사용하는 브랜치(개발자가 각자 작업을 하는데에 사용)
# Branch를 이용한 협업 방법
1) master 를 개발용 develop 브랜치에 복제
먼저, master를 복제할 develop용 로컬 저장소를 생성합니다.
mkdir develop // develop 디렉토리 작성
cd develop // develop 디렉토리에 이동
git init // 디렉토리를 Git저장소로 변환
그 후, Master를 Develop 저장소에 복제(Clone)합니다.
git clone [공유 Master Repository URL]
ex) 본 포스트에서는 이전 포스트에서 만들었던 Repository를 마스터로 하겠습니다.
git clone github.com/[유저명]/Test001.git
마지막으로, develop 브랜치를 생성하고 저장소에 push해줍니다.
git branch develop // develope 브랜치 생성
git push -u origin develop // develope 브랜치를 저장소에 push
2) develop 브랜치를 베이스로 feature브랜치를 생성
각자 개발자가 본인의 업무를 위해 feature브랜치를 생성합니다. 이 때, master가 아닌 develop 브랜치를 기준으로 브랜치를 따야 합니다.
git branch feature_branch develop // develop 브랜치를 베이스로 feature_branch를 생성
git branch // 생성된 브랜치 리스트를 확인
결과 화면)
3) 담당 업무 수행 및 수정 내용 commit 및 push
작업 할 feature_branch 로 이동한 후, 개발 작업을 수행합니다.
개발 작업이 끝나면 변경된 내용을 commit 및 push합니다.
본 포스트에서는 이전 포스트에서 작성했던 "test.html"파일을 수정하겠습니다.
먼저, feature_branch로 이동한 후, 파일을 아래와 같이 수정해줍니다.
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>HelloWorld</title>
</head>
<body>
<!-- <h1></h1>태그 추가_start -->
<h1>Hello?</h1>
<!-- <h1></h1>태그 추가_end -->
</body>
</html>
수정이 완료되었다면, 아래의 코드로 수정된 파일을 commit 및 원격 저장소에 push 해줍니다.
git add test.html
git commit -m "add tag <h1>"
git push git push --set-upstream origin feature_branch
4) Pull Request 송신
수정한 파일이 원격저장소에 성공적으로 push 되었다면, GitHub에서 해당 Repository를 확인합니다.
Repository의 내부를 보면, 노란색 블록으로 feature_branch가 push 되었다고 알려줍니다.
사진과 같은 노란색 블록이 표시되었다면, 오른쪽에 "Compare & pull request" 버튼을 눌러 "Open a pull request"화면을 표시합니다.
[1]: develop로 변경해줍니다.
[2]: 변경된 내용을 기입합니다.
[3]: 톱니바퀴 버튼을 눌러, 리뷰를 받을 상대를 선택합니다.
[4]: 톱니바퀴 버튼을 눌러, 본인을 선택합니다.
※ 필요에 의해 다른 항목도 추가 입력 해줍니다.
입력이 끝났다면, "Create pull request"버튼을 눌러 Pull Request를 요청해줍니다.
※ 상황에 따라, "Create pull request"가 아닌, 화살표 버튼을 눌러 "Create draft pull request"를 우선적으로 사용하는 경우가 있습니다.
이 부분은 사람에 따라, 회사에 따라 사용법이 바뀔 수 있습니다.
5) 승인 후 병합(Merge)
상대방으로부터 Pull Request의 승인을 받았다면, feature_branch 브랜치에서 수정한 내용을 develop 브랜치에 병합합니다.
위 화면에서, "Merge pull request"버튼을 눌러줍니다.
이 후에 표시되면 위 화면에서 "Confirm merge"버튼을 눌러 develop브랜치에 병합합니다.
병합이 완료되면, "Delete branch"버튼을 눌러 필요가 없어진 feature_merge를 삭제해줍니다.
경우에 따라, 수정 이력을 남기기위해 feature브랜치를 삭제하지 않고 남기는 경우도 있습니다.
이상으로, Git과 GitHub을 이용한 버전 관리 및 협업 방법에 대해 간단히 알아보았습니다.
master와 develop를 나누어 사용하는 방법이나 pull request를 사용하는 방법 등, Git 과 GitHub를 이용하여 협업을 하는 방법은 같이 일하는 개발자, 또는 회사의 업무 방법에 따라 전부 달라지기 마련입니다.
그 때 그 때 상황에 맞춰 능동적으로 Git · GitHub을 사용할 수 있도록 더 공부를 할 필요가 있을 것 같습니다.
p.s) 코로나 때문에 원격으로 GitHub에 대한 지식을 알려준 Hamill 님에게 심심한 감사 인사 남기겠습니다.
(블로그에 박-제)
도움1) https://velog.io/@kameals - Hamill
참고1) https://blog.appkr.dev/learn-n-think/comparing-workflows/ - Git을 이용한 협업 워크플로우 배우기
참고2) https://mrw0119.tistory.com/120 - [GitHub] 튜토리얼 - 깃허브 사용법