[Git] upstream, origin에 대하여

박기영·2022년 12월 5일
4

Git

목록 보기
6/8
post-thumbnail

git을 사용하면서 upstream, origin 등 위치를 나타내는 듯한 용어들이 등장한다.
이들을 어떤 식으로 이해하면 좋을지 기록해보자.

위치 === 상대적

upstreamorigin은 위치를 나타내는 단어이다. 대략 상류, 원류로 해석된다.
그런데 위치라는 것은 상대적이다.
내 기준에서 저 것은 멀지만, 다른 사람 기준에서는 가까운 것일 수 있는 것 처럼말이다.

upstreamorigin도 마찬가지이다.
내가 바라봤을 때 무조건 어느 위치에"만" 존재하는 것들이 아니다. 유동적으로 위치가 바뀐다.

아래 그림을 보자.

참고 이미지

어떤 repository에서 fork를 통해 내 repository로 코드를 옮겨온 뒤,
내 local 환경에서 작업을 진행하고 있다.

여기서 upstream은 어디인가? 그리고 origin은 어디인가?

...모른다. 기준이 없기 때문이다.
기준이 있어야지 어떤 놈이 upstream이고 origin인지 말 할 수 있다.

그럼 기준을 잡아보자.

우선 local 환경을 기준으로 해보자.
origin은 어디일까? 원류, 즉, 기준을 만들어낸 기원이므로 내 repository를 의미한다.
upstream은 어디일까? 원류를 만들어낸 상류이므로 우테코 repository를 의미한다.

쉽게 말하면, upstreamoriginorigin이라고 할 수 있겠다.
그림으로 이해해보자.

참고 이미지

아! 이제야 관계가 이해가 된다.
정말 상대적인거구나.

git remote add origin ~

프로젝트를 github에 올리기 위해서 기계적으로 작성했던 이 코드.
이제 이 코드를 해석해볼 수 있겠다.

$ git remote add origin https://github.com/Rki0/git_study.git

origin이라는 이름으로 내 repository를 원격 저장소에 추가하겠다.

git push -u origin main

변경 사항이 발생해서, 이를 원격 저장소에 반영할 때 사용하는 커맨드이다.

$ git push -u origin main

origin 저장소에 main 브랜치를 push한다.
그러면 -u는 무슨 의미일까?
바로 --set-upstream의 약자이다.

즉, 위 커맨드는 아래와 동일하다는 것이다.

$ git push --set-upstream origin main

왜 굳이 -u를 사용해야하는걸까?
바로, 위계 질서를 정립하기 위해서이다.

originmain 브랜치의 upstream으로 설정하겠다는 것이다.
그래서, 매번 -u를 할 필요없이 처음 push에만 이렇게 해주면 된다.

아까 말했듯이 위치는 상대적이다.
따라서, 이전에 upstreamfork해 온 repository라고 했다해서,
걔만이 upstream으로 설정될 수 있고..그런 것은 아니다.

upstreamdownstream, 상류와 하류의 관계를 설정하는 것 뿐이다.

참고로, clone을 하면 상하 관계가 명확하기 때문에 자동적으로 upstream, origin 관계가 설정이 된다.

참고 자료

우테코 4기 레벨1 메이커준의 Git 특강

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글

관련 채용 정보