[Github] 팀으로 코드 버전 관리

박도준·2021년 6월 23일
0

Git & Github

목록 보기
3/3
post-thumbnail

앞서 개인으로 코드 버전 관리하는 방법을 알아봤습니다. 실제로는 코드 관리를 팀 단위로 하는 경우가 더 많기 때문에 팀 단위로 코드 버전 관리하는 방법을 알아봅니다.



Github이란?

Github은 Git을 이용한 공유 Web 서비스이다.


Github을 이용한 코드 관리

Github Repository

앞서 개인으로 작업할 때의 Repository는 Local Repository이고, Github에 있는 Repository는 Remote Repository이다.

일반적인 개발 진행에서는 Remote Repo에서 파일을 가져와 Local Repo를 생성한 다음 Local Repo에서 파일 갱신을 한다. 그리고 Local Repo에서 Remote Repo로 갱신을 반영한다.


Remote Repo 생성 및 등록

Remote Repo를 생성하는 방법은 2가지가 있다.
1. Remote Repo를 생성한 후, Remote Repo에서 Local Repo를 생성하는 방법
2. Local Repo를 먼저 생성한 후, Local Repo가 반영되어야 하는 Remote Repo를 지정하는 방법

앞서 Local Repo를 먼저 생성했기 때문에 2번의 방식으로 진행해본다.

$ git remote add origin git주소
$ git push -u origin master

git remote add 명령어에 의해 origin이라는 이름으로 Remote Repo를 인식한다.
이때 git주소는 Remote Repo에서 아래와 같이 얻을 수 있다.

다음으로 git push 명령어를 통해 origin(Remote Repo)에 대해 master branch 상태를 반영한다.

현재까지의 수행 상태는 Local Repo에서 수행한 내용이 Remote Repo에 반영된 상태이다.


git clone으로 Remote Repo를 Local Repo에 복제

만약 Remote Repo에 존재하는 Repository를 Local Repo로 가져오고 싶은 경우, git clone을 사용하면 된다.

git clone Repository Repository주소


git pull로 Remote Repo의 변경 사항을 Local Repo에 적용

만약 팀원이 Remote Repo에 새로운 변경을 했다면 변경 사항을 추가로 포함시켜야 한다. 이때 git pull을 사용한다.

git pull Repository주소

git pull은 내부적으로 fetchmerge 두 종류의 동작을 수행한다. Remote Repo에 정보를 업테이트(fetch)하고, Local Repo의 Branch에 통합(merge)한다.


Branch 이용

지금까지는 Remote Repo가 한 종류밖에 없었다. 하지만 개발을 하다보면 차기 개발을 위한 코드나 버그 수정을 위한 코드도 동시에 관리할 수 있어야 한다.

이러한 상황에서 Git의 Branch를 사용한다. Branch는 이름 그래도 나뭇가지와 같이 하나의 Repo가 확장해 나가는 모습을 표현한다. Branch를 사용하면 서로 영향이 없는 상태로 코드를 관리할 수 있게 된다.

branch 상태 확인

branch의 상태를 확인하기 위해 git branch를 사용한다.

$ git branch

명령어를 실행하면 *master가 출력되는데, *가 부여된 branch가 현재 사용중인 branch를 뜻한다.

branch 추가

branch를 생성하려면 git branch에 인수를 추가한다.

$ git branch branch명

test-branch 이름으로 branch를 생성하면 아래와 같이 branch 상태를 확인할 수 있다.

branch 전환

생성한 branch로 전환하는 경우, git checkout을 사용한다.

$ git checkout branch명

전환한 후, 파일을 수정해본다.

그리고 branch에 갱신을 반영한다. 이때, master branch에는 방영되지 않는다. 왜냐하면 방금 진행한 갱신은 test-branch만 했기 때문에 master에는 영향이 가지 않는다.


Pull Request

위와 같이 branch를 파서 개발을 진행했다면 언젠가는 master branch에 변경 내용을 반영하는 경우가 생긴다. 보통 master branch에 병합(merge)할 때는, 병합하려는 코드를 테스트하고 review를 실시한 다음 병합하는 순서로 진행된다.

병합을 하기 위해 "병합 승인 요청"의 형태로 요청을 보내게 되는데, 이를 Pull Request라고 한다.

Pull Request 동작

  1. Pull Request 발행 (Review 의뢰자)

reveiw를 요청하는 쪽에서 pull request를 발행한다. github 화면에서 "Compare & pull request" 버튼을 선택한다.

그러면 아래와 같이 pull request 화면으로 이동한다.

이때 화면 오른쪽에 버그에 대응하는 것인지, 질문에 관한 것이지 등에 대해 식별하는 Labels과 누구에게 리뷰를 받고 싶은지 지명하는 Assignees 등의 기능이 있다.

그리고 하단에는 실제 commit 내역과 master branch와 test-branch의 차이가 표시되어 있다.

여기까지 확인했다면 "Create pull request" 버튼을 클릭한다. 그러면 pull request의 발행이 완료된다.

  1. Review & Comment (Review 수행자)

이제 review를 수행하는 입장에서 이 pull request를 확인해본다. 이 코드의 변경이 정당한가, 코딩 규칙에 부합하는지 등 다양한 관점에서 pull request를 확인한다.

review를 하면서 comment도 적을 수 있다. 그리고 "File changed" 탭에서 코드의 각 행에 대해서도 comment를 적을 수 있다.

  1. Comment 대응 (Review 의뢰자)

만약 review 수행자가 comment를 달았다면 이에 대해 의뢰자는 코드를 수정한다.

수정과정도 이전과 같이 해당 branch(test-branch)에서 코드를 수정하고 commit, push를 한다.

  1. Review 및 병합 (Review 수행자)

의뢰자가 수정했다면 수행자는 다시 확인을 한다. 그리고 reivew를 하여 문제가 없다면 병합을 한다.

병합은 "Merge pull request" 버튼을 눌러 진행한다.

그리고 "confirm merge" 버튼으로 확인까지 하면 merge 이루어진다.

profile
Better late than never

0개의 댓글