티스토리 뷰
1단계 - 브랜치 생성 및 Fork 그리고 Local로 복사
1. 원본 프로젝트에 나의 브랜치 생성 및 확인
1-1. next-step/java-lotto-pro 저장소에 브랜치 생성
1-2. 브랜치 확인
2. Fork 해서 나의 GitHub로 프로젝트 가져오기
* Copy the main branch only 체크 해제
3. 나의 GitHub에서 Local로 프로젝트를 가져온 후 기능 구현을 위한 브랜치 생성
3-1. Fork한 프로젝트 URL을 이용해서 Local에 나의 브랜치만 다운로드 한다.
git clone -b {본인_아이디} --single-branch https://github.com/{본인_아이디}/{저장소_아이디}
ex) git clone -b seogineer --single-branch https://github.com/seogineer/java-lotto-pro.git
3-2. 작업 브랜치 생성
cd {다운로드한_프로젝트_이름}
git checkout -b {브랜치_이름}
ex) git checkout -b step1
4. 인텔리제이로 프로젝트 가져오기 그리고 요구 사항에 따라 소스 작성 후 add, commit, push
4-1. github에 코드 업로드 하기
git status // 변경된 파일 확인
git add -A(또는 .) // 변경된 전체 파일을 한번에 반영
git commit -m "메시지" // 작업한 내용을 메시지에 기록
git push origin {브랜치이름} // 나의 github 저장소에 변경한 내용을 업로드
ex) git push origin step1
2단계 - PR(pull request) 보내기와 리뷰 요청 하기
1. pull request 보내기
* 본인의 아이디로 만든 브랜치가 아니라 작업 브랜치를 선택하고 pull request를 진행한다!!!
* 왼쪽 base: main를 반드시 본인 브랜치(base: seogineer)로 바꿔야 한다.
2. 리뷰 요청 하기
* 만약 pull request가 approve되지 않고 수정 요청을 받았다면, 코드를 수정한 다음 add, commit, push를 한다. 그리고 문서 우측 상단에 [리뷰 요청] 버튼을 다시 누른다.
3. merge 방식
merge 방식 | 설명 |
Create a merge commit | 모든 작업 commit을 새로운 commit을 만들어서 main 브랜치에 병합. (parent 2개) |
Squash and merge | 모든 작업 commit을 하나의 commit으로 합해서 main 브랜치에 병합. (parent 1개) |
Rebase and merge | 모든 작업 commit이 merge commit 없이 개별적으로 main 브랜치에 병합. (parent 1개) 하나의 브랜치에서 작업한 것 처럼 보임. |
3단계 - 작업 브랜치 삭제 및 merge된 저장소와 local 저장소 동기화
1. 브랜치 변경 및 작업 브랜치 삭제
git checkout {본인_아이디}
git branch -D {삭제할_브랜치이름}
ex) git checkout seogineer
ex) git branch -D step1
2. Merge된 next-step 저장소와 Local 저장소 동기화
2-1. upstream이라는 이름으로 remote 저장소 추가
git remote add {저장소_별칭} {base_저장소_url}
ex) git remote add upstream https://github.com/next-step/java-lotto-pro.git
// 위와 같이 next-step 저장소를 추가한 후 전체 remote 저장소 목록을 본다.
git remote -v
2-2. next-step 저장소에서 내 브랜치 가져오기
git fetch {저장소_별칭} {본인_아이디}
ex) git fetch upstream seogineer
remotes/upstream/seogineer 브랜치 생성 확인
git branch -a
2-3. next-step 저장소와 local 저장소 동기화
git rebase upstream/{본인_아이디}
ex) git rebase upstream/seogineer
3. 새로운 미션을 위한 브랜치 생성
git checkout -b 브랜치이름
ex) git checkout -b step2
* (rebase를 하지 않은 경우) 충돌 발생시 해결 방법
git checkout {본인_아이디}
git reset --hard upstream/{본인_아이디}
git checkout {기능_브랜치}
git merge {본인_아이디}
위 명령 실행 후 충돌이 발생한 코드로 가서 충돌을 해결한 후 다시 add, commit, push 후 리뷰 요청을 한다.
참고
GitHub의 Merge, Squash and Merge, Rebase and Merge 정확히 이해하기
[Git] Merge 이해하기 (Merge / Squash and Merge / Rebase and Merge)
'Git' 카테고리의 다른 글
우아한테크캠프 Pro 5기 - Commit Message Conventions (0) | 2022.10.28 |
---|---|
fatal: remote origin already exists. (0) | 2021.04.14 |
Git 기본 사용법 (0) | 2020.12.25 |