Github 사용법 3. 브랜치로 협업하기 (pull request)

하마·2025년 2월 19일
0

git & github

목록 보기
6/14

신기능을 만들고 싶으면 메인 브랜치에 코드 짜다가 프로젝트 망치지 말고
다른 브랜치를 만들어서 거기에 개발하는 게 안전하고 좋다고 했습니다.


원격 저장소에도 브랜치를 만들 수 있습니다.
브랜치 생성하려면
1. 원격 저장소 사이트(github)에서 브랜치를 직접 만들어도 되고
2. 아니면 로컬에서 만든 브랜치를 올려도 브랜치 생성이 가능합니다.

1. github 사이트에서 직접 브랜치 생성 가능

메인 브렌치를 누르면 브랜치를 바꾸거나 새로 만들 수 있습니다.

2. 아니면 로컬 저장소에서도 브랜치 생성 가능

로컬 저장소에서 브랜치를 만들어서 원격 저장소로 git push 해도 됩니다.

예를 들면 지금 사이트를 하나 만들고 있는데
사이트 방문자들 컴퓨터에 몰래 비트코인 채굴기를 심는 기능을 만든다고 칩시다.

작업 폴더에서

  • 새로운 mining 브랜치를 만들고
  • 파일도 하나 새로 만들어서 커밋 해봤습니다.

그 다음에 로컬 브랜치를 원격에 올리고 싶으면

git push 원격저장소주소 로컬브랜치명
이거 하면 됩니다.

참고

  • git push 원격저장소주소 로컬브랜치명 하면
    특정 로컬 저장소 브랜치 -> 원격 저장소
  • git push 원격저장소주소 하면
    모든 로컬 저장소 브랜치 -> 원격 저장소 입니다.

우리같은 코딩노예들은 특정 브랜치만 올리는 일이 잦습니다.

3. Pull request 하기

브랜치 만들면 뭐합니까 그걸 메인이랑 합쳐야 기능이 완성되지 않겠습니까.
합치려면 git merge 로 합치면 끝입니다. 그리고 git push 하면 끝인데
팀끼리 협업하는 경우 merge 하기 전에 토론하거나 검토하거나 그래야 하는 경우가 많습니다.
그래서 Github 웹사이트는 Pull request 기능이 있습니다.
그냥 쉬운 말로 merge request입니다.


이거 누르면 내 브랜치좀 merge 해달라는 요청을 할 수 있고
팀원끼리 merge 전에 코드 검토가 가능합니다.

Github 웹사이트에서 pull request를 열고 싶으면

아무나 상단 Pull request 메뉴에서 초록 버튼 누르면 됩니다.

그 다음엔 어떤 브랜치를 어디에 합칠 것인지 선택하고
하단에서 커밋 내역, 변경 내역 잘 보고
초록 버튼 누르면 pull request 창구가 열립니다.

그럼 Pull requests 메뉴에서 확인 가능한데
누르면 코딩노예들이 토론할 수 있는 곳도 있습니다. 거기서 코드 리뷰하면 됩니다.

시니어들도 집에서 빤스바람으로 대충 읽고 Looks good to me~ 댓글 남기면 됩니다.

잘 된것 같아서 merge 하기로 했으면
merge 할 때 옵션 중 선택하면 됩니다.

merge의 3가지 방법 Recap

  • create a merge commit

새로운 merge 커밋을 하나 생성해주는 3-way merge를 실행합니다.

  1. 메인 브랜치 조회 시 합쳐진 브랜치의 commit 내역도 전부 나옴
  2. 터미널에 git log --oneline --graph 해보면 합쳐진 브랜치도 그림으로 나옴
  3. 그래서 커밋 내역이 많으면 복잡하고 더러워보일 수 있습니다.
  • squash and merge
  1. 합쳐질 브랜치의 커밋 내역을 하나로 합쳐서 메인 브랜치에 신규 commit을 생성해줍니다.
  2. git log --oneline --graph 해보면 합쳐진 브랜치 안나옴
  3. 커밋을 하나로 합쳐서 메인 브랜치로 순간이동 시켜주는 행위라 사람들이 깔끔하다고 좋아합니다.
  • rebase and merge
  1. 합쳐질 브랜치를 메인 브랜치 최신 커밋으로 rebase 하고나서 fast-forward merge 비슷한걸 해줍니다.
  2. 결과는 squash and merge와 비슷한데 합쳐질 브랜치의 커밋 내역이 전부 보존됩니다.
  3. 얘도 git log --oneline --graph 해보셈



오늘의 결론

github 등 원격 저장소에도 브랜치 만들 수 있습니다.
Pull request(merge)할 땐 3개 중 맘대로 하시면 됩니다.




강의 출처

0개의 댓글