HOWTO · Git
Git 설정 업스트림 분기
Git에서 업스트림 추적 관계를 설정하는 방법을 알아보세요.
이 페이지의 내용
업스트림 브랜치는 로컬 브랜치가 따라가는 원격 추적 브랜치입니다. 추적 관계를 설정하면 Git은 일반적인 git pull 및 git push 작업에서 비교하거나 사용할 원격 브랜치를 추론할 수 있습니다. 원격 브랜치를 아직 게시해야 하는지, 이미 존재하는지, 아니면 처음으로 로컬에 체크아웃해야 하는지에 따라 명령을 선택하세요.
업스트림 브랜치의 역할
추적 관계는 로컬 브랜치 하나를 원격 추적 브랜치 하나에 연결합니다. 예를 들어 로컬 my-feature-branch가 origin/my-feature-branch를 추적할 수 있습니다. 추적 관계만으로 브랜치가 병합되거나 커밋이 복사되지는 않습니다. 대신 Git에 기본 대상과 비교 기준을 알려 주므로 이후에는 보통 git pull이나 git push에서 원격과 브랜치 인수를 생략할 수 있습니다.
명령에서 참조하는 원격 추적 브랜치는 로컬 저장소에 있어야 합니다. 원격에서 가져오기를 수행하면 이 참조가 갱신됩니다. 아래 예에서는 원격 이름으로 origin, 브랜치 이름으로 my-feature-branch를 사용합니다. 저장소에서 사용하는 이름에 맞게 바꾸세요.
새 브랜치를 푸시하면서 업스트림 설정하기
로컬 브랜치를 아직 게시하지 않았다면 추적 관계를 설정하지 않고 git push origin my-feature-branch를 실행해 게시할 수 있습니다. 이 명령은 브랜치를 origin에 푸시하지만, 이후에도 푸시할 때 원격과 브랜치 인수를 지정해야 합니다. 브랜치를 게시하면서 추적 관계도 한 번에 설정하려면 git push --set-upstream origin my-feature-branch를 실행하세요. -u는 더 짧은 표기입니다. 추적 관계를 설정한 뒤에는 보통 이후 푸시에서 원격과 브랜치 인수를 생략할 수 있습니다.
간단한 포매터를 사용하면 인수 순서를 확인할 수 있습니다. 직접 실행할 명령을 출력할 뿐, Git을 실행하거나 브랜치를 게시하지는 않습니다.
아래 예제를 실행하세요.
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
branch = "my-feature-branch"
remote = "origin"
print(f"git push --set-upstream {remote} {branch}")
git push --set-upstream origin my-feature-branch
저장소에서 Git 명령을 실행하면 원격 브랜치가 생성되고 현재 로컬 브랜치가 해당 브랜치를 추적합니다. --set-upstream-to 옵션은 git branch에 속하며, 새 브랜치를 게시할 때 사용하는 git push 옵션은 아닙니다.
기존 로컬 브랜치의 업스트림 설정하기
로컬 브랜치와 해당 원격 추적 브랜치가 모두 이미 있다면, 로컬 브랜치로 전환한 뒤 git branch --set-upstream-to=origin/my-feature-branch로 업스트림을 설정하세요. 짧은 표기는 git branch -u origin/my-feature-branch입니다.
이 명령은 현재 로컬 브랜치의 추적 관계를 설정합니다. 먼저 git checkout my-feature-branch 등을 사용해 연결할 브랜치에 있는지 확인하세요. origin/my-feature-branch가 원격 추적 참조에 아직 없다면 먼저 원격에서 가져오기를 수행합니다. 이 설정은 커밋을 푸시하지 않고 브랜치 간 관계만 변경합니다.
원격 브랜치를 추적하는 로컬 브랜치 만들기
브랜치가 원격에는 있지만 로컬 저장소에는 없다면, 원격 추적 브랜치에서 로컬 브랜치를 만들고 전환할 수 있습니다. git checkout -b my-feature-branch origin/my-feature-branch를 실행하세요. 이 방식은 로컬 브랜치를 만들고 지정한 원격 추적 브랜치를 업스트림으로 설정합니다.
로컬 브랜치 이름은 아직 사용 중이 아니어야 하며 원격 추적 참조를 사용할 수 있어야 합니다. 필요하면 먼저 원격에서 가져오기를 수행하세요. 새 로컬 브랜치를 원격에 게시하는 경우와는 다릅니다. 여기서는 원격 브랜치가 로컬 브랜치의 출발점입니다.
업스트림 확인 또는 해제하기
로컬 브랜치에서 git status를 실행해 업스트림과의 관계를 확인하세요. Git이 양쪽을 비교할 수 있으면 브랜치가 앞서 있는지, 뒤처져 있는지, 또는 서로 갈라졌는지를 표시할 수 있습니다. 이를 바탕으로 푸시하거나 가져오거나 커밋을 조정할지 결정하세요. 상태에 추적 정보가 표시되지 않으면 업스트림이 설정되어 있는지, 원격 추적 참조를 가져왔는지 확인하세요.
원격 브랜치 추적을 중단하려면 로컬 브랜치에 있는 상태에서 git branch --unset-upstream을 실행하세요. 이 명령은 추적 관계만 제거하며 로컬 브랜치, 원격 브랜치 또는 커밋을 삭제하지 않습니다. 나중에 git branch --set-upstream-to=<remote>/<branch>로 다른 업스트림을 설정할 수 있습니다.