(Git/Git) git push –set-upstream 오리진 마스터

1. 문제

외부 프로젝트를 포크한 후 # git push 를 실행하여 풀 리퀘스트를 요청했으나 다음 오류와 함께 푸시가 거부되었습니다.

치명적: 현재 브랜치 마스터에 업스트림 브랜치가 없습니다.
현재 브랜치를 푸시하고 리모트를 업스트림으로 설정하려면 다음을 사용하십시오.

git push –set-upstream 오리진 마스터

추적하지 않고 상점에 대해 자동으로 발생하도록 하려면
업스트림, ‘git help config’의 ‘push.autoSetupRemote’를 참조하세요.

오류 메시지를 읽을 때 현재 브랜치는 업스트림 브랜치가 없고 푸시용입니다. git push –set-upstream origin master 명령을 사용하라고 합니다.

두 번째 원인

로컬 워크스페이스에서 수정한 코드를 업스트림 브랜치로 옮겨야 하는데 업스트림이 어디 있는지 모르니 결정을 부탁드립니다. 그래서 에러 메시지에서 보이는 것처럼 –set-upstream 옵션을 사용하면 push와 upstream 설정이 동시에 이루어집니다.

공식 Git 문서에는 –set-upstream 옵션이 최근 또는 성공적으로 푸시된 모든 분기에 대한 업스트림 참조를 추가한다고 명시되어 있습니다.

이후에는 # git push 또는 # git push {branch name} 명령어로 pull request를 정상적으로 진행할 수 있습니다.

3. 업스트림과 오리진은 무엇입니까?

3.1. 정당성

둘 다 원격 저장소를 참조합니다.

3.2. 차이점

origin : 가리킬 원격 저장소를 자동으로 결정합니다. 복제할 때 원본은 원본 원격 저장소를 가리키도록 자동으로 설정됩니다.

upstream : 연결할 저장소를 결정해야 하므로 가리킬 저장소를 지정해야 합니다.

이때 –set-upstream 옵션 없이 # git push origin 명령어를 실행하면 git push 대상이 정해져 있기 때문에 정상적으로 push가 진행된다.

* 참조 : https://git-scm.com/docs/git-push#Documentation/git-push.txt—set-upstream, https://velog.io/@ddoobukk2/upstreamorigin-%EC%B0%A8%EC%9D%B4-git-push-upstream-error