pull request 위해서 아래의 절차를 거친다.
- fork
- clone, remote 설정
- branch 생성
- 수정 작업 후 add, commit, push
- pull request 생성
- 코드 리뷰, Merge Pull Request
- merge 이후 branch 삭제, fork 한 저장소를 최신 원본으로 동기화
1. fork
- 타켓 프로젝트의 저장소를 자신의 저장소로 fork 한다.
- fork 가 완료되면 자신의 계정에 새로운 저장소가 생긴다.
2. clone, remote 설정
- fork 한 저장소를 로컬에 clone 한다.
$ git clone https://github.com/iamzin/Study-Algorithm.git
- 로컬 저장소에 원격 저장소를 추구한다.
- 원본 저장소(직접 추가 필요)
- fork 한 저장소 (origin이라는 별명으로 기본으로 추가되어 있다. 따로 추가할 필요 없음)
# 원본 프로젝트 저장소를 원격 저장소로 추가
$ git remote add upstream(별명) https://github.com/원본계정/blog.github.io.git
# 원격 저장소 설정 현황 확인방법
$ git remote -v
3. branch 생성
개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다. - pro git book
# lovelyAlien 이라는 이름의 branch를 생성한다.
$ git checkout -b lovelyAlien
Switched to a new branch 'lovelyAlien'
# 이제 2개의 브랜치가 존재한다.
$ git branch
* lovelyAlien
main
4. 수정 작업 후 add, commit, push
$ git add .
$ git commit -m "feat: solve algorithm_week02"
# lovelyAlien 브랜치의 수정 내역을 origin 으로 푸시한다.
$ git push origin lovelyAlien
5. pull request 생성
- push 완료 후 본인 계정의 github 저장소에 들어가면 Compare & pull reqeust 버튼이 활성화되어 있다.
6. 코드리뷰, Merge Pull Request
7. merge 이후 동기화 및 branch 삭제
# 브랜치 전환 lovelyAlien-> main
$ git checkout main
# 코드 동기화
$ git pull upstream(remote 별명) main
# 로컬 브랜치 삭제
$ git branch -d lovelyAlien(브랜치 별명)
# 원격 브랜치 삭제_방법1
$ git push origin :loveyAlien
# 원격 브랜치 삭제_방법2
$ git push origin --delete lovelyAlien
branch를 만들고 삭제하는 이유는 뭘까?
출처 블로그에 달린 질문에 명확한 답변이 있어 적어본다.
만약 프로그래밍을 한다면, 실제 배포되어 사용 중인 코드가 있을 거고, 기능 개발 중인 코드가 있을 것이다. 한창 개발 중인 프로그램인데 갑자기 고객사로부터 이슈가 도착해서 급하게 수정을 들어가야 하는 경우, 내가 지금 개발 중인 신 기능이 포함된 코드에서 수정을 하게 되면 실제 배포할 때 미완성된 신기능도 같이 섞여서 들어가게 될 것이다.
그렇기 때문에 현재 배포 되어있는 버전에서 브랜치를 파생해서 개발 브랜치를 만들어 신기술을 해당 브랜치 내에서 작업하면, 급하게 버그 요청이 들어왔을 때 마스터 브랜치에서 다시 이슈 픽스 브랜치를 파생해서 해당 브랜치에서만 버그를 고쳐서 병합을 진행할 수 있고, 현재 내가 개발하고 있는 신기술을 개발 브랜치에 온전히 있는 상태에서 배포된 프로그램의 이슈만 고치는 작업을 진행할 수 있다.
출처: https://wayhome25.github.io/git/2017/07/08/git-first-pull-request-story/
'Git' 카테고리의 다른 글
이미 push한 commit 메시지 변경 (0) | 2022.02.09 |
---|---|
.gitignore 적용하기 (0) | 2021.08.03 |
Git-Commit Message Convention (0) | 2021.07.31 |