본문 바로가기

내가 해냄/패스트캠퍼스

깃허브로 협업하기 | 깃 협업순서 | 깃 협업 준비 과정 | 깃허브 팀프로젝트 | Fork, Clone, Remote, Branch생성, Push, PullRequest

 최근 백엔드와 협업하는 팀 프로젝트를 진행하였는데 그 과정에 있어 프론트 팀도 깃허브를 사용하여 프로젝트를 진행했다. 이에 프로젝트 시 깃허브 사용법에 대해 나의 경험을 토대로 짧게 정리해보려한다. 평소 깃 협업에 대해 자신은 없었지만 역시 최고의 공부는 프로젝트라고 이론공부 + 개인실습 때보다 더 확실하고 더 임팩트있게 깃 공부도 경험한듯하다. 

1. 리파지토리 생성하기

 우선 프로젝트 시작에 앞서 리파지토리를 생성해야한다. 대표자 한 명이 리파지토리 생성 후 공동작업권한을 부여하기 위해 GitHub Collaborator를 추가해야하는데 아래와 같이 리파지토리 내의 Settings -> Collaborators 에서 공동작업자를 초대할 수 있다. 

 

Add People 버튼으로 공동작업자를 추가할 수 있다

2. 리파지토리 포크(Fork) 하기

 각각의 작업자가 작업을 할 수 있도록 대표 리파지토리를 개인의 리파지토리로 가져와야하는데 이럴때 사용할 수 있는 기능이 깃허브의 포크(Fork) 기능이다. 쉽게 말해 리파지토리를 통째로 내 깃허브로 복사해올 수 있는 기능을 뜻한다. 포크는 간단하게 리파지토리 내 헤더에서 Fork 버튼을 누르면 손쉽게 내 깃허브로 리파지토리를 복사해올 수 있다.

 

3. 포크한 리파지토리 로컬로 클론(Clone) 하기

 포크 후 내 깃허브를 확인해보면 이렇게 리파지토리가 생긴것을 볼 수 있는데 밑에 포크 출처도 함께 표시되어있다. 이때, 이 상태의 리파지토리는 내 컴퓨터에 있는 리파지토리가 아니기때문에 내 컴퓨터로 리파지토리를 복제해와야하는데 이 작업을 클론(Clone) 한다고 한다. 클론 하기 위해서는 일단 리파지토리 주소를 따야하는데 주소 따는 방법은 아래 사진과 같이 클릭 클릭하면 바로 복사가 된다!

 

Code -> Copy 버튼을 클릭

 주소 카피 후에는 터미널이나 깃 배시를 통해 git clone 명령어를 입력하면 클론(Clone)이 완료된다. git clone 입력 후 해당 리파지토리의 URL을 복사해서 작성하면 된다.

$ git clone https://github.com/boksooni/test.git(URL 주소를 입력)

4. 프로젝트를 원격 저장소에 추가 (Remote) 

 클론까지 완료했으면 원격 저장소에 추가를 해야하는데 이때는 remote 명령어를 사용한다. origin이라는 이름으로 URL주소를 추가한다는 뜻이다.

$git remote add origin https://github.com/boksooni/test.git(원본 레포 주소를 입력)

5. 브랜치(Branch) 생성 후 작업하기

 이제 거의 설정 완료의 상태인데, 최종 코드 작업을 위한 브랜치 생성 후 작업을 시작하면 된다. 대게 팀플 내에서 맡은 역할 별로 브랜치를 파서 커밋하는 것 같은데 브랜치 생성, 브랜치 확인, 브랜치 변경 등 각각 다른 명령어를 사용해야한다.  아마 처음 클론 후 확인해보면 main 브랜치만 덩그러니 있을 것이다. 이번 프로젝트에서 내가 맡은 역할은 Header만들기므로 header 브랜치를 추가 후 이 브랜치에 header 코드 작업을 해주겠다. 아래와 같이 명령어를 사용하여 브랜치 작업을 할 수 있다.

#브랜치 생성
$git checkout -b header(브랜치이름)
#브랜치 확인
$git branch
#브랜치 변경(브랜치가 여러개일시)
$git switch main(이동하고픈 브랜치이름)

 

Git Bash에 명령어를 입력

 

이렇게 리파지토리에서도 생성된 브랜치 목록을 볼 수 있다.

6. 커밋 후 푸시(Push)하기

 내 컴퓨터에서 작업한 내역을 메인 레포로 보내기위해서 커밋 후 푸시를 해야한다. 이때 협업시 사용할 커밋 메세지 규칙을 미리 정해놓고 시작하는데 정해진 내역에 따라 커밋하고 푸시하는 방법을 정리해보았다. 

#작업 내역 추가
$git add .
#작업 내역 커밋(" "로 커밋메세지 작성)
$git commit -m "feat: 메인페이지 기능 개발"
#원격 저장소로 보내기
$git push origin(remote) mainpage(branch name)

 

위와 같이 add -> commit -> push 순서로 진행한다

7. 작업내역을 PR(Pull-Request)하기

 add, commit, push 이후 리파지토리를 확인해보면 초록색의 compare & pull request 버튼이 활성화되어있는 것을 볼 수 있는데 이 버튼을 눌러 직접 PR을 할 수 있다. 미리 작성해둔 템플릿을 사용하여 간단하게 작업내역을 공유해주면 된다. 해당 작업 내용을 팀원들이 확인 후 확인 댓글이나 수정 요청 사항 등을 댓글로 작성하여 소통할 수 있다. 팀원 모두 확인 후 이상이 없으면 대표자가 머지하면 작업이 완료된다.

 

8. 원격 저장소에서 작업 파일들을 내 컴퓨터(로컬)로 내려받기(Pull)

 팀원들의 작업 내역을 받아오거나 최신 파일들로 업데이트 할 때 Pull을 사용하여 받아오면 된다. 쉽게 말해 원격저장소의 파일들을 가져오는거라 생각하면 된다. 7번의 PR을 다른 팀원들이 하였을 때 최신 파일들로 받아오면 되는데 이때 Pull 명령어를 사용한다. 

#최신파일로 받아오기
$git pull M(원격저장소명) develop(브랜치명)

 

이렇게 pull하게되면 최신 파일들을 받아온다.

 9. 오류 보고( error: failed to push some refs to ~, Can't automatically merge ) / 오류 해결법

 이렇게 작업 내역들이 있을 경우 Pull을 사용하여 받아오면 되는데 파일들이 최신 버전이 아닐 경우 나는 에러들이 종종 있기때문에 확인 후 받아오는 것을 추천한다. 실제 이번 프로젝트를 진행하면서 pull을 안해서 있었던 에러가 몇몇개 있었다.

-1) can't automatically merge 

 

 

 이렇게 PR시 머지가 안된다는 오류인데 이 경우는 올린 파일이 최신 파일이 아니여서 생기는 오류이다. 이 경우 최신 파일들로 Pull 해오는 8번의 과정을 다시 진행해주었더니 해결되었다. 

 

-2) error: failed to push some refs to ~

 

에러가 뜨면

 

 이 에러는 원격 저장소에 로컬에 없는 파일이 있을 때 푸시할 때 생기는 에러인데 이 에러도 마찬가지로 파일들을 최신 버전으로 Pull 해주면 해결된다. 

 

Pull 해주기