본문 바로가기

GitHub 제대로 활용하기

[GitHub] How to collaborate

Github을 사용하여 여러 사람들과 함께 프로젝트 협업 방법을 배워 봅니다.

 

목표:

  • 브랜치를 생성하여 나의 작업 커밋하기
  • 작성한 커밋을 수정하기
  • 특정 브랜치의 전체 커밋을 나의 작업 브랜치로 가져오기
  • 특정 브랜치의 일부 커밋을 나의 작업 브랜치로 가져오기

     Q. 배포용 main branch와 테스트용 dev branch, 개발용 feature branch를 어떤 순서로 merge 해야할까?


0. Commit & Branch (사전지식)

1. Branch 활용하기

2. Pull Request 활용하기 (PR)

3. 협업 실천가이드 - part.1 (part.2는 다음 글에서 확인!)


 

0. Commit & Branch

 

※ What is "Commit"? 

Git은 프로젝트 버전을 관리할 때 특정 시점에 대한 파일과 폴더의 전체 상태를 스냅샷으로 저장하는데 이 특정 시점의 스냅샷을 의미하는 단위가 바로 커밋(commit)이다. 커밋은 생성될 때 이전 커밋으로부터 어떤 변경(diff)이 있었는지 기록하며, 모든 개별 커밋은 이전 커밋으로부터 생성된 것이기 때문에 각 커밋은 이전 커밋(=부모 커밋)을 가리키는 형태로 표현한다.

 

※ What is "Branch"? 

브랜치(branch) Git에서 커밋을 가리키는 포인터이다. 각 브랜치는 특정 커밋을 기점으로 시작하며, 새로운 커밋을 추가할 때마다 해당 브랜치는 최신 커밋을 가리키는 포인터의 역할을 계속해서 수행한다. 여러 커밋이 쌓이면 각 브랜치는 특정 프로젝트 기점으로부터 새로운 이력을 가진 독립적인 작업 단위가 된다. (HEAD 브랜치는 현재 체크아웃된 커밋을 가리키는 포인터)

 

 

 ↓  랜치를 분류하는 5가지 기준은 아래 링크 참고   

🔗  https://blog.dnd.ac/types-of-git-branch/

 

 


 

1. Branch 활용하기

 

기본 명령어 리스트

 

▒  브랜치 생성

       생성하기 : git branch 브랜치 이름  → [enter]

       확인하기 : git branch

       ※ 키보드 q 로 빠져나갈 수 있다.

 

▒  브랜치 이동

       신규버전 : git switch 브랜치 이름 

       옛날버전 : git checkout 브랜치 이름 (현재도 사용 가능)

        ※ 브랜치를 전환하거나 특정 커밋으로 이동하는 것을 Git에서 체크아웃(checkout)이라 한다.

 

▒   브랜치 한 번에 생성 & 이동

       신규버전 : git switch -c 브랜치 이름

       옛날버전 : git checkout -b 브랜치 이름 (현재도 사용 가능)

 

▒   새로운 브랜치에서 수정된 코드 저장 (두 단계 모두 해야 함!)

      파일 지정 : git add . (띄어쓰고 쩜)

      변경 저장 : git commit -m "저장 메세지"

 

▒   login 브랜치를 main 브랜치에 합치기

      main : git swich 최종 브랜치 이름

      login : git merge 합칠 브랜치 이름

      ※ 먼저 'git swich 최종 브랜치'로 이동하고 merge 명령어를 입력!

 

 


 

 

2. Pull Request 활용하기 (PR)

 

협업 시 git merge 명령어로 터미널에서 바로 합치는 경우는 거의 없다.

 

Github에서 코드를 합치기 전 팀원 간 코드에 문제가 없는지 확인하고, 서로의 코드에 대한 리뷰한다.

이외에도 충돌 여부 확인, 테스트 자동화 등 다양한 이점들이 있다.

 

Github에서 코드를 merge하기 위해선 pull request를 생성해야 하는데

Pull request의 의미는 코드를 “기본 브랜치(main)로 당겨와 합치는 것(Pull)을 요청(Request)한다” 라는 뜻이다.

쉽게 말해 코드를 합쳐도 되는지 팀원들에게 물어보는 것이다.

 

그럼 본격적으로 pull request를 활용하는 방법을 알아보자.

 

 

#1. 브랜치 생성 및 브랜치 이동

git switch -c <브랜치명>
ex) git switch -c logout

혹은

git checkout -b <브랜치명>
ex) git checkout -b logout

 

 

#2. 코드 수정

 

 

#3. 코드 변경 저장

git add .
git commit -m "update: 로그아웃 기능 생성"

 

 

#4. Github에 코드 업로드 

git push origin <브랜치명>
ex) git push origin logout

 

 

 

#5. Github에서 Compare & pull request 버튼 클릭

 

 Compare & pull request 알림이 안생기거나 사라졌다면?

      → 당황하지 말고 Pull requests 탭 클릭 후 New pull request를 누르면 된다.

 

 

#6. Create pull request 클릭

 

 

#7. pull request 생성 결과

 

 

#8. merge 하기

  1. Merge pull request 버튼 클릭
  2. Confirm merge 버튼 클릭 
  3. merge 버튼 완료

 

 

#9. 내 로컬 컴퓨터에서 다시 기본 브랜치(main)으로 이동

Your branch is behind ‘origin/main’ by 2 commits, and can be fast-forwarded. 
(use “git pull” to update your local branch)

 

“github repository보다 뒤쳐져있으니 git pull 명령어로 똑같이 맞추세요” 라는 뜻

 

 

#10. git pull 명령어로 github repository의 코드내 로컬 저장소의 코드 똑같이 맞추기

git pull origin <브랜치명>
ex) git pull origin main

 

 


 

3. 협업 실전 가이드

 

1) develop브랜치에 merge하기 이전에 기능 브랜치에 먼저 merge한다. 이로써 배포용 main으로 가기 전까지 두 단계를 거침으로써 위험성을 줄인다. (팀장이 아닌) 내가 최종 merge 하는 것은 develop 이라고 생각하고 기능 브랜치에 합친다.

※ [Main 브랜치 == 배포용] 이므로 신중하자.

 

2) 로컬에서 먼저 충분히 테스트를 한다.