Pull request, 대표적으로 push권한이 없는 오픈소스 프로젝트에 참여하여 코드기여를 하고 싶을때 작성한 내 코드를 프로젝트쪽에서 pull 할 수 있게 요청하는것.
원본저장소는 푸시를 할 수 없기 때문에 푸시를 할 수 있도록 내 원격저장소에 포크해온다.(원본저장소 프로젝트를 내 원격저장소에 복제해온다.)
깃허브에서 해당 원본저장소 fork로 내 원격저장소 생성
포크해온 저장소를 내 로컬에 클론 받는다.
작업할 위치에서 git명령어 실행, 원격저장소 주소는 포크해온 내 원격저장소의 주소 입력
git clone <원격저장소 주소> ex) git clone git@github.com:hyeon5819/petstagram.git
클론받고난 후 메인브랜치는 건들지 않고 바로 작업을 위한 브랜치를 만들고 이동해준다.
- 브랜치 생성 후 브랜치 이동
git branch <브랜치 이름> git checkout <브랜치 이름> ex) git branch my_branch git checkout my_branch
- 브랜치 생성하고 이동까지 한번에
git checkout -b <브랜치 이름> ex) git checkout -b my_branch
작업이 끝난 후 작업내용을 내 원격저장소에 푸시한다.
작업 브랜치에서 add, commit, push까지 진행
이때 push는 포크한 원격저장소에 진행한다.
git push <원격저장소 이름> <작업중인 브랜치 이름> ex)git push origin my_branch
푸시 후 포크한 원격저장소에 가서 풀리퀘스트를 보낸다.
github에 들어가서 원본저장소에 pull request를 보낸다.
main으로 이동
git checkout main
upstream 동기화
git pull <원본 저장소> <브랜치이름> git pull upstream main
origin에 반영
git push origin main
로컬 브랜치 삭제
git branch -d
원격 브랜치 저장소도 삭제하고 싶은 경우
git push origin --delete <브랜치이름>
로컬브랜치에 원본저장소의 업데이트 내용을 fetch
git fetch upstream
로컬브랜치에 원본저장소 병합
git checkout <브랜치명> git merge upstream/main
컨플릭 생기는 경우 해결 후 커밋진행
이후 포크싱크를 위해 6 항목 실행