로컬에서 새로운 브랜치에 작업한 내용을 리모트 브랜치에 푸쉬하는 경우 해당 로컬 브랜치에 업스트림 브랜치를 설정하지 않았다면, 다음과 같은 Git 오류가 뜹니다.
fatal: 현재 브랜치 add/join에 업스트림 브랜치가 없습니다. 현재 브랜치를 푸시하고 해당 리모트를 업스트림으로 지정하려면 다음과 같이 하십시오.
git push --set-upstream origin add/join
물론, 오류 메시지에 나온대로 현재 브렌치에 해당하는 리모트 저장소의 브렌치를 업스트림으로 설정해도 됩니다. 하지만, 매번 브렌치를 파서 작업할때마다 해당 작업을 하는 건 시간 낭비라고 느껴서 해결책을 검색해봤습니다. 해결책은 생각보다 간단했습니다.
git config --global push.default current
해당 명령어를 통한 git 설정 한 번으로 업스트림 설정 없이 현재 브렌치와 같은 이름으로 리모트에 푸시할 수 있게 됩니다.
git config을 확인하면 해당 설정과 관련된 다양한 옵션을 확인할 수 있다.
push.default
refspec에 대한 설정이 어떤 경로로도 주어지지 않았을 때의 동작을 결정한다. 다음은 push.default로 지정 가능한 값들이다.
- nothing - 어떤 커밋도 푸시하지 않는다.
- matching - 리모트/로컬 브랜치가 서로 일치할 경우에만 푸시한다. (기본)
- upstream - 현재 브랜치를 지정해둔 upstream 브랜치로 푸시한다.
- tracking - (deprecated) upstream과 동일
- current - 현재 브랜치와 같은 이름으로 리모트에 푸시한다.