
키워드 이해하기
origin
깃허브에 존재하는 원격레포를 뜻한다. 우리가 자주 사용하는 다음 명령어에서 origin은 원격레포를, main은 브랜치를 의미한다. git push origin main 또한, clone하지 않고 git init을 했을때는 git remote add origin ... 명령어를 입력하기도 한다.
local
내 컴퓨터에 존재하는 레포를 의미한다.
upstream, downstream
git clone을 했다면 origin은 자동으로 등록돼고, git init을 했다면 git remote add origin ...으로 origin을 등록한다. 여기서 upstream은 origin이 되고, downstream은 local이 된다.
git push -u origin main에서 -u 옵션이 --set-upstream 옵션의 줄임말로 upstream으로 설정한다는 뜻이다. 이는 한번만 해주면 되며, 그 다음부터는 -u 옵션 없이 push, pull 해주면 된다.
github에서 레포를 생성했을때, 로컬과 원격을 연결할 수 있는 방법들을 설명해주는데, 다음 두 방법을 잘 살펴보면 origin과 -u 쓰임을 이해할 수 있다.

프로젝트 workflow
- dev 브랜치는 백업용으로 feature/기능 브랜치에 문제가 생겨 코드를 되돌리고 싶을때 사용할 수 있다. 따라서 항상 upstream dev와 local dev의 sync가 맞아야한다.
- feature/기능 브랜치에서 upstream의 dev 브랜치로 pr를 날린다. (upstream dev 업데이트)
- local dev 브랜치에서 git pull upstream dev (local dev 업데이트)
- origin dev 브랜치로 git push origin dev (origin dev 업데이트)
git switch -c feature/기능)merge한 후에는 동일한 파일에서 코드수정금지! git pull로 최신화한 후부터 코드수정할것.