Git에서 처음 브런치를 푸시할때 --set-upstream 을 해야하는 이유

내가 몰랐던 것들·2025년 11월 14일
0

Git

목록 보기
1/1

로컬에서 브랜치를 만든 후 push를 하면 아래같은 메세지가 뜬다

fatal: The current branch new-branch has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin new-branch

To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.

fatal: 현재 브랜치(feature/admin-koin-reactive)는 업스트림 브랜치가 없습니다.
현재 브랜치를 push하고 원격 브랜치를 업스트림으로 설정하려면 다음을 사용하세요:
git push --set-upstream origin new-branch
트래킹 업스트림 브랜치가 없는 브랜치에 대해 이러한 설정을 자동으로 하고 싶다면,
git help config에서 push.autoSetupRemote 항목을 참고하세요.

알려준 명령어를 그대로 사용하면 되는 문제이지만, 왜 굳이 --set-upstream 이란 옵션을 붙여야 할까?

로컬 브랜치와 원격 브랜치가 연결이 안된 상태이기 때문에, Git이 어떤 브랜치를 추적해야하는지 모르기 때문이다.

로컬브랜치와 연결할 원격 브랜치를 명시하는것이 --set-upstream 플래그다.
해당 명령어를 수행하면, 원격해 브랜치가 새로 생성되고, 로컬 브랜치는 원격 브랜치를 추적하게 된다.




그럼 --set-upstream 으로 완전 다른 이름의 브랜치를 생성해도 연결 될까?
-> 가능하다. 로컬 브랜치가 어떤 원격 브랜치를 추적할건지 설정하는것이므로 이름은 달라도 동작한다. 다만, 로컬 브랜치와 원격 브랜치의 이름을 동일하게 관리하는것이 일반적.

이미 원격에 존재하는 이름의 브랜치로 생성하면 충돌이 발생할까?
-> history가 다를 경우엔 충돌이 발생한다.

  • 로컬이 원격보다 뒤쳐져있을 경우: push 거부. 먼저 pull 받은 후 다시 수행필요
  • 로컬이 원격보다 최신일 경우: 정상적으로 push 가능

0개의 댓글