← 모든 글

Git has no upstream branch 오류 추적 브랜치 지정하기

원인: 현재 main이 기본으로 push할 원격 브랜치와 연결되어 있지 않습니다. 해결: 올바른 대상이 origin의 main인지 확인한 뒤 전송과 추적 관계 설정을 함께 합니다.

git push -u origin main

원격 주소가 다르거나 non-fast-forward가 나오면 멈추고 해당 원인을 확인하세요.

화면은 실제 프로그램에서 캡처했습니다. 이미지를 누르면 새 탭에서 원래 크기로 볼 수 있습니다. 넓은 화면은 이미지 안에서 좌우로 밀어 보세요.

1. 브랜치와 원격 주소를 확인하세요

git push에서 has no upstream branch가 나오면 git branch --show-current와 git remote -v를 확인하세요. upstream은 현재 브랜치가 기본으로 연결할 원격 브랜치입니다. 예제는 커밋이 있는 main과 origin은 있지만 이 연결이 없습니다. 원격 주소가 의도한 곳이 아니면 전송을 멈추세요.

현재 main에 upstream이 없다는 오류가 나타납니다.
화면에서 찾을 항목: 현재 main에 upstream이 없다는 오류가 나타납니다.

확인할 결과현재 main에 upstream이 없다는 오류가 나타납니다.

2. 명시한 대상으로 보내고 연결하세요

현재 브랜치가 main이고 의도한 원격 이름이 origin일 때 다음을 실행하세요. 이름이 다르면 확인한 이름으로 바꿉니다.

git push -u origin main

-u는 성공한 전송 대상과 추적 관계를 저장합니다. 인증, 권한 오류나 non-fast-forward가 나오면 중단하고 해당 원인을 해결하세요. 이 옵션은 원격 기록 보호를 우회하지 않습니다.

main이 전송되고 origin/main을 추적하도록 설정됩니다.
화면에서 찾을 항목: main이 전송되고 origin/main을 추적하도록 설정됩니다.

확인할 결과main이 전송되고 origin/main을 추적하도록 설정됩니다.

3. 다음 push가 대상을 찾는지 확인하세요

다음 명령으로 간단한 브랜치 상태와 이후 전송 동작을 확인합니다.

git status -sb
git push

예제에서는 main...origin/main과 Everything up-to-date가 보입니다. main이 origin/main을 추적하고 같은 기록을 이미 전송했다는 뜻입니다. 다른 대상이 나오면 추가 전송을 멈추고 연결한 원격과 브랜치를 다시 확인하세요.

upstream은 origin/main이고 다음 push는 Everything up-to-date입니다.
화면에서 찾을 항목: upstream은 origin/main이고 다음 push는 Everything up-to-date입니다.

확인할 결과upstream은 origin/main이고 다음 push는 Everything up-to-date입니다.

참고한 자료

다음에 읽기

git push non-fast-forward 오류 해결 방법 →

fatal: not a git repository 해결 방법 →

src refspec main does not match any 해결 방법 →