[Git] 미션 수행 전 git 세팅 step-by-step

Dico·2021년 2월 14일
0

[Git]

목록 보기
3/3

1. code-squad의 해당 미션 레포지토리에 내 이름으로 된 브랜치를 생성 요청한다.

Dico라는 브랜치가 만들어졌는 지 확인한다.

2. code-squad의 미션저장소의 오른쪽 상단 Fork버튼으로 내 github에도 미션 저장소를 만든다.


이렇게 내 github에도 해당 미션의 원격 저장소가 만들어지는 것!

Plus 🍯 tip: Fork를 해오면 코쿼 브랜치에서 fork를 해간 다른 사람들의 브랜치도 전부 나의 원격저장소에서 보여진다.
이 때 보여지는 브랜치를 지우고 싶다면 로컬 터미널에서 아래 명령어을 사용할 수 있다.

git push origin --delete {branch1} {branch2} {branch3}

3. 2번에서 만들어진 원격 저장소를 로컬로 복사해와야 한다.

이 때 주의할 점! 내가 실습할 "나의 브랜치"만 복사를 해오려면 아래 명령어로 진행한다.

git clone -b Dico --single-branch {내 원격저장소 리포지토리 url} 

Plus 🍯 tip: git branch -a로 생성된 모든 브랜치를 볼 수 있다. 이걸로 내 브랜치만 복사한 게 맞는 지 확인해볼 것!

4. step 1 브랜치를 만들어서 첫 작업을 시작한다.

(*일반적으로 main브랜치는 최종 결과를 반영하는 브랜치로 main에서 작업은 하지 않는다.)

git checkout -b step1

5. git add + git commit 후 원격 리포지토리에 push 한다.

4번 과정에서 step1 브랜치가 만들어졌으니 git add + git commit 후에는 내 git의 step1 브랜치에 push를 해주어야한다.

git push origin step1

6. 코드리뷰를 받기 위해서 pull request를 보낸다.

github에 들어가서 브랜치를 step1으로 바꿔준다음 New pull request버튼으로 새로운 PR을 생성한다.


마스터분들이 코드 리뷰 시 참고할 수 있도록 본문 내용에 변경된 내용 summarize 하기

7. git remote add로 로컬에 원격 저장소를 연결해준다(upstream과 origin 설정).

(이 단계를 시작하기 전, 먼저 현재 내가 어느 브랜치에 위치하고 있는 지 확인하고, 메인 브랜치(Dico)가 아닐경우git checkout Dico 로 옮긴 후 시작한다.)
코드리뷰 이후 변경된 내용이 Dico브랜치에 merge 완료되면, 로컬과 원격의 버전을 동일하게 맞춰줘야 한다.
즉, 원격에 있는 코드를 로컬로 가져와야 하는데 현재 로컬의 Dico브랜치는 비어있는 상태이므로 원격 Dico브랜치와 로컬 Dico브랜치에 연결고리를 만들어줘야 한다.
upstreamorigin저장소를 각각 설정해줘야 하는데, ⭐️⭐️⭐️이 때 주의해야 할 점은 upstream저장소와 origin저장소는 달라야한다는 것이다!⭐️⭐️⭐️

//upstream(코쿼 저장소) 연결하기
git remote add upstream {http://github.com/코쿼저장소 url}

그리고 git remote -v로 확인해보면 originupstream이 각각 설정된 것을 볼 수 있다.

이 상태에서 git branch -a로 확인해보면 origin브랜치만 보여질 뿐, upstream브랜치는 보여지지 않는다.

❗️만일 origin이나 upstream 저장소를 재설정해야 할 때는, 아래 명령어로 변경할 수 있다.❗️

//upstream 저장소 삭제
git remote rm upstream

//upstream 저장소 재설정
git remote add upstream {http://github.com/코쿼저장소 url}

*참고:
https://ifuwanna.tistory.com/263
https://mylko72.gitbooks.io/git/content/remote/remove.html

8. main(혹은 Dico)브랜치로 이동 후 merge 완료 된 브랜치는 삭제한다.

PR을 보낸 브랜치가 merge완료 된 걸 확인했다면, 현재 작업하던 브랜치에서 다시 main브랜치로 옮겨가야 한다.

git checkout main
//혹은
git checkout Dico

그리고 merge 완료된 브랜치는 아래 명령어로 과감하게 지워준다.

git branch -D {지울 브랜치명}

9. upstream에서 merge가 완료된 코드를 fetch 해온다.

이제 PR 이후 merge가 완료된 가장 최신 코드를 로컬로 가져와야하는데, 이걸 해주는 것이 아래 명령이다.

git fetch upstream Dico

⭐️⭐️⭐️이 때에도 모든 사람의 코드를 가져오려는 게 아니라면 반드시 브랜치를 별도로 특정해주어야 한다!!⭐️⭐️⭐️
이 상태에서 다시 git branch -a을 해보면 보이지 않았던 remotes/upstream/Dico가 생긴 것을 확인할 수 있다.

10. rebase로 로컬 브랜치를 (PR이 끝난 원격 저장소의 코드와 같은 상태로)업데이트 해준다.

사실 fetch만으로는 동기화가 완료된 것이 아니기 때문에 변화를 확인할 수 없다.
이제 로컬 Dico브랜치에 PR이 끝난 원격 저장소의 코드를 동기화 해주어야하는데, 아래 명령어로 진행한다.

git rebase upstream/Dico 


이 명령어는 "upstream에 있는 Dico 브랜치를 기준으로 내 로컬 Dico 브랜치를 업데이트 하겠다."라는 뜻이 된다.
이제 동기화 작업은 끝!!!

11. 새로운 브랜치를 만들어 다음 작업을 이어간다.

현재 위치는 동기화된 Dico 브랜치. 여기서 이제 새로운 브랜치 step2를 만들어 새로운 작업을 이어가야 한다.

git checkout -b step2

이후 과정은 PR을 만드는 스텝(6번)부터 반복된다. 7번은 최초에 한번만 지정해주면 되므로 반복하지 않는다.


Reference

*본 포스팅은 아래 영상의 내용을 포함하고 있습니다.
잘못되거나 부적절한 내용이 있을 시 알려주시면 신속히 반영하도록 하겠습니다 🙂
https://www.youtube.com/watch?v=a5c9ku-_fok&feature=youtu.be

profile
프린이의 코묻은 코드가 쌓이는 공간

0개의 댓글