본문 바로가기

카테고리 없음

협업을 위한 git & github (Pull & Request 도전기)

다른 사람의 레포지토리에서 함께 작업하는 방법을 연습해보자.

시작하기에 앞서… https://wayhome25.github.io/git/2017/07/08/git-first-pull-request-story/이 글을 보고 따라 학습했습니다!

 

git 초보를 위한 풀리퀘스트(pull request) 방법 · 초보몽키의 개발공부로그

개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는

wayhome25.github.io

순서

  1. 협업할 파일 Fork 하기
  2. clone, remote 설정하기
  3. 작업할 branch 생성하기
  4. 수정 작업 후 commit, push
  5. Pull Request 보내기
  6. Pull Request 받아보기… (Merge 할? 말?)
  7. Merge 이후 branch 삭제 및 동기화하기

협업할 파일 Fork하기

다른 사람의 레포지토리를 frok하면 나의 저장소로 불러올 수 있다.

해당 버튼으로 간단하게 포크 가능

포크하기 위해선 파일이 하나라도 있어야 하니 README.md를 하나 만들어두었따.

안에는 그냥 NYA~ 라고 적혀있다.

Fork란

다른 사람의 레포지토리에서 내가 어떤 부분을 수정하거나 추가하고 싶을 때 해당 레포지토리를 그대로 복사해서 내 레포지토리에 추가하는 기능이다.

fork한 저장소는 원본과 연결되어 있다. 그래서 original 저장소에서 어떤 변화가 생긴다면, fork한 레포지토리에 반영될 수 있다. 조심!

clone하기 (local에서 작업하기 위해!)

이제 local저장소로 clone을 해보자. clone은 local저장소로 해당 작업물을 가져오는 작업이다.

git clone {fork_repository_link}

branch생성

내가 작업할 branch를 생성해보자.

git checkout -b hamsoter

이제 로컬에서의 독립적인 개발환경이 만들어졌다.

README.md를 약간 수정해서 커밋해보기로 했다.

수정 작업 후 commit, push

NYA 밖에 없던 파일에 HAMSOTER의 개입

git commit -m "Update: README.md"
git push origin hamsoter

Pull Request 보내기

이제 original 레포지토리에 영향 끼쳐보자!

fork한 레포지토리에 작업하다가 이 작업물을 original main 레포지토리에 적용하고 싶다면?

그때 사용하는 것이 바로 Pull, Request다.

push 완료후 github의 fork한 레포지토리로 돌아오면 Compare & Pull Request 버튼이 활성화 되어있는 모습을 볼 수 있다.

Pull Request 받아보기… (Merge 할? 말?)

이제 PR을 보내는 쪽 아닌 받는 쪽으로 시점을 변경해보자

PR 요청을 받은 원본 저장소의 관리자는 코드 변경 내역을 확인하고 Merge 할 것인지 말 것인지의 여부를 결정한다.

그러니까… origin 레포 주인은 이렇게 보인다!

original repository의 Pull request에 알림이 뜬 모습
요청을 수락하기 전
요청을 수락한 후

merge됨과 동시에 pr이 close가 되나보다… 한번 merge하니 해당 PR이 close가 되어버림!

아무튼 지금은 original 레포지토리에 hamsoter 레포지토리가 무사히 병합되었다!

그말인즉슨, 이제 original 레포지토리를 확인해보면…

내가hamsoter 브랜치에서 수정한 README.md 파일이

original 레포지토리의 main 브랜치에 재대로 병합된 것을 볼 수 있다.

Merge 이후 local에서 해줘야 할 작업

이렇게 동기화 되었으니 이제 로컬에서 작업하던 hamsoter 브랜치는 필요없어진다. 그러니 이제 아래 작업을 해주면 깔끔해진다.

  1. main브랜치로 체크아웃하고
  2. pull로 최신 상태로 동기화!
  3. 그 후 hamsoter 브랜치 지워주기
# main 브랜치로 체크아웃
git checkout main

# 코드 동기화
git pull origin main

# 브랜치 삭제
git branch -D hamsoter

이런 작업을 하는 이유

이런 작업(fork해서 본인 브랜치를 만들었다 지웠다…)를 반복하는 이유가 무엇인가…?

그냥 fork해서 메인에서 작업하면 안되는 것인가…!!

 

라고 한다… 브랜치를 나눠두면, 배포된 버전, 개발중인 버전, 이슈 수정 버전으로 많은 버전을 두고 개발할 수 있구나. 그리고 마지막엔 merge로 잘 병합해주면 되는군아