새소식

👀 etc...

[Git] git 사용법 튜토리얼5 - PR (Pull Request) & Issue

  • -

 

 

 

 


 

git 사용법 튜토리얼 시리즈

 

1 초기화, 스테이징, 커밋, 되돌리기 

2 깃 브랜치(branch) 같은 파일로 여러 버전 만들기 

3 깃허브와 연동하기

4 브랜치 원격에서 다루기

5 PR (Pull Request) & Issue

6 오픈 소스 기여하기

 

 


 

 

1-4 포스팅까지 내용 정리

명령어 내용
git clone Remote(원격저장소, 깃허브) 레포지토리의 내용을 복제
git push Remote(원격저장소, 깃허브) 레포지토리로 내용을 보냄
git pull Remote(원격저장소, 깃허브) 레포지토리의 내용을 가져옴
git fetch Remote(원격저장소, 깃허브) 레포지토리에서 변경 내용 가져옴

 

 

 


 

 

Fork & Pull Request

 

 

 

 

내가 다른 사람의 저장소에 있는 코드를 수정하거나,

다른 사람의 저장소의 코드를 내가 수정하려면 Contribute로 등록이 되어있어야 합니다.

 

하지만 모든 사람을 다 Contribute로 등록할 순 없죠.

 

 

 

 

 

 

이때 Fork를 이용합니다. 포크로 쿡 찔러 가져오듯 다른 사람의 저장소에 있는 레포지토리를 내 원격 저장소, 깃허브로 가져오는 것입니다. Minji라는 유저가 Gildong의 레포지토리 중 하나를 Fork하였다면 Minji의 github 에 해당 레포지토리가 그대로 가져와 집니다.

 

 

 

 

Fork해온 레포지토리를 내 로컬에 Clone 한 후 코드를 수정합니다.

 

Fork : 레포지토리를 원격저장소에 복사

Clone : 레포지토리를 로컬저장소에 복사

 

 

 

 

 

민지가 이것 저것 코드를 수정한 후 민지의 원격 저장소에 커밋한 뒤,

수정한 내용이 맘에 들거나 길동의 레포지토리에도 반영이 되면 좋겠다 생각이들면

'Pull Request'를 보내는 것입니다.

 

 

 

 

 

1) Fork하기 원하는 저장소에 상단에보면 Fork 버튼이 있습니다. 이를 클릭해서 Fork합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Fork가 완료되면 내 원격 저장소에 해당 레포지토리가 생기게 됩니다. 그리고 밑에 Fork From 원래저장소라고 출력되는 것을 확인할 수 있어요.

 

 

 

 

 

 

 

 

2) Clone해서 내 로컬에 옮긴 후 코드를 수정하고 내 원격에 push 합니다.

 

 

 

 

 

그리고 원격에 다시 접속해보면 내가 변경한 사항이 반영되어 있습니다.

 

 

 

 

3) 이제 상단에 Pull requests 를 클릭하면 새로운 pull request를 생성할 수 있는 "New pull request"를 클릭.

 

 

 

그리고 원래 Contributer가 승인을 하면 원래 원격 저장소에 변경된 사항이 반영이 되고, pull request의 상태는 closed로 변경됩니다. 그리고 pull request를 받는 쪽(원래 개발자)에서는 해당 내용을 확인하고 반영해도 좋겠다 싶으면 Merge Confirm를 해줍니다.(Conflict가 없을 때) 맘에 들지 않는다 하면 Reject

 

 

 

 

 


 

 

 

Issue & Pull Request

 

 

 

다른 사람들과 깃허브로 협업을 할 때 가장 중요한 부분이 'Issue'입니다. 이슈는 문제점, 또는 개발해야하는 사항, 개선해야 하는 것 등등의 이슈를 모아놓은 게시판 이라고 생각하면 됩니다.

 

 

 

 

 

 

New issue 버튼을 눌러 새로운 이슈를 생성해줄 수 있습니다.

 

 

 

 

 

제목과 내용을 작성하고, 오른쪽 메뉴를 보면 여러가지 옵션을 지정할 수 있습니다. 그리고 이슈 별로 미리 양식을 지정해놓을 수 있는데 이슈 템플릿 등록하기 글을 참고해주세요.

 

  • Assignees : 이슈를 해결해줄 사람 지정.
  • Labels : 이슈의 카테고리를 지정. 예를 들어, duplicate는 이미 누군가 이슈를 만들었으므로 지워도 된다는 뜻
  • Milestone : 해당 작업이 속한 파트. ex) Version 1.0.0

 

이슈가 해결되면 다시 그 이슈로 들어가 Close Issue 해줍니다.

 

 

 

 

 

이슈가 중요한 이유는 생성된 Issue Number 기반으로 Branch를 생성할 수 있다는 점입니다.

 

일단, 프로젝트에서 이슈에 관해 새로운 브랜치를 만들어 수정해 줍니다.

git checkout -b 브랜치명 // 브랜치 생성 후 checkout

 

그리고 커밋하고 푸쉬하고 생성한 브랜치에 대해 원격 저장소에서 pull request를 생성해줍니다.

 

 

 

 

 

 

 

 

수정한 내용을 작성하고

* resoved 뒤에 이슈넘버를 입력합니다. 이슈넘버를 클릭하면 해당 이슈로 넘어갈수 있습니다.

 

 

 

 

 

 

그리고 master Branch 에 pull request가 Merge되면 pull request는 자동으로 closed됩니다.

자동으로 closed되는 것이 싫다면 issue: #[issue number]를 입력해주면 됩니다.

 

 

 

 

 

그리고 pull request 생성과 동시에 이슈번호가 부여됩니다. 여기서는 #2

pull request도 이슈인 것입니다.

 

 

 

 

반영후 , pull request도 close되고,

 

 

 

issue 도 close 됩니다.

 

 

 

 


References

 

GitHub로 프로젝트 관리하기

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.