April 14, 2023
미션을 시작, 개발 환경을 구축, 1단계 미션 완료, push를 보내는 단계.
터미널에 아래 명령어 입력
git clone -b {본인_아이디} --single-branch https://github.com/{본인_아이디}/{저장소 아이디}
ex) git clone -b highjune --single-branch https://github.com/highjune/java-racingcar
clone한 폴더로 이동하는 방법
cd {저장소 아이디}
ex) cd java-racingcar
copy the main branch only
를 체크했다면 main브랜치만 받아오게 된다. 이 경우에는 github 저장소에서 나의 아이디(highjune)로 branch를 생성해준다.현재 터미널에서 git remote -v
라고 치면 아래와 같이 뜸
origin https://github.com/highjune/java-racingcar (fetch)
origin https://github.com/highjune/java-racingcar (push)
터미널 명령
git checkout -b 브랜치이름
ex) git checkout -b step1
기능 구현을 완료한 후 로컬 저장소에 변경된 부분을 반영하기 위해 add, commit 명령을 사용한다.
git status // 변경된 파일 확인
git add -A(또는 .) // 변경된 전체 파일을 한번에 반영
git commit -m "메시지" // 작업한 내용을 메시지에 기록
로컬에서 commit 명령을 실행하면 로컬 저장소에만 반영되고, 원격 github.com의 저장소에는 반영되지 않는다.
git push origin 브랜치이름
ex) git push origin step1
pull request를 통해 코드 리뷰 요청을 한 후 피드백을 받고, 피드백을 반영하는 과정
pull request는 original 저장소(next-step의 저장소)의 브랜치(자신의 아이디 = highjune)와 앞 단계에서 생성한 브랜치 이름(앞 단계의 예에서는 step1)을 기준으로 한다.
ex) 미션을 진행한 javajigi/java-racingcar step1 브랜치 => nextstep/java-racingcar javajigi 브랜치로 pull request를 보낸다.
리뷰 부탁드립니다.
요청앞서 보낸 pull request가 통합(merge)되지 않은 상태이기 때문에 같은 pull request를 재활용한다.
git status // 변경된 파일 확인
git add -A(또는 .) // 변경된 전체 파일을 한번에 반영
git commit -m "메시지" // 작업한 내용을 메시지에 기록
git push origin 브랜치이름
ex) git push origin step1
리뷰 요청을 보낸 후 pull request가 next-step으로 통합(merge)된 이후의 과정
현재 미션을 완료했기 때문에 미션을 진행한 브랜치를 삭제하고 다음 미션을 위한 새로운 브랜치를 생성해야 한다.
git checkout 본인_아이디
git branch -D 삭제할_브랜치이름
ex) git checkout highjune
ex) git branch -D step1
git remote add-
명령은 최초 1회만 진행하면 된다.
git remote add {저장소_별칭} base_저장소_url
ex) git remote add upstream https://github.com/next-step/java-racingcar.git
// 위와 같이 next-step 저장소를 추가한 후 전체 remote 저장소 목록을 본다.
git remote -v
git remote -v
의 결과는.
origin https://github.com/highjune/java-racingcar (fetch)
origin https://github.com/highjune/java-racingcar (push)
upstream https://github.com/next-step/java-racingcar.git (fetch)
upstream https://github.com/next-step/java-racingcar.git (push)
앞 단계에서 next-step 저장소에 이름을 부여했다면 이번 단계는 fetch 명령으로 동기화하고 싶은 next-step 저장소의 브랜치를 가져오기 해야 한다.
git fetch upstream {본인 아이디}
ex) git fetch upstream highjune
rebase 명령을 실행해 next-step 저장소와 로컬 저장소의 브랜치를 동기화한다.
git rebase upstream/본인_아이디
ex) git rebase upstream/highjune
다음 단계는 코드리뷰 요청 1단계의 4번 항목의 checkout 명령으로 새로운 브랜치를 생성한다
git checkout -b 브랜치이름
ex) git checkout -b step2
Q) next-step 저장소와 rebase를 하지 않은 상태에서 브랜치를 생성했더니 충돌이 발생하고 있어요. 충돌을 해결하려면 어떻게 해야 하나요?
git checkout 본인_아이디(예: git checkout javajigi) 명령을 실행해 계정 브랜치로 이동한다.
git reset --hard upstream/본인_아이디(예: git reset --hard upstream/javajigi)
git checkout 기능_브랜치(예: git checkout step2)
git merge 본인_아이디(예: git merge javajigi)