728x90
반응형
원격 브랜치 (Remote Branch)
원격 저장소에 존재하는 브랜치로 원격 저장소에서 관리되고 있는 브랜치입니다.
원격 추적 브랜치 (Remote Tracking Branch)
로컬에서 원격 브랜치를 추적하는 참조이자 브랜치입니다. 예를 들어, origin/develop 은 원격 저장소 origin 의 develop 브랜치를 참조하는 원격 추적 브랜치입니다. 즉, 원격 저장소 origin 의 develop 브랜치를 참조하는 브랜치입니다.
git branch -r 을 통해 원격 추적 브랜치 목록을 확인할 수 있습니다.
트래킹 브랜치 (Tracking Branch)
로컬 브랜치가 원격 추적 브랜치를 통해 간접적으로 원격 브랜치를 추적하는 상태인 경우 해당 로컬 브랜치를 트래킹 브랜치라고 합니다. 예를 들어, develop 이라는 로컬 브랜치가 origin/develop 원격 추적 브랜치를 통해 develop 원격 브랜치를 추적하는 상태라면, 로컬 브랜치 develop 은 트래킹 브랜치입니다.
- 트래킹 브랜치가 설정된 경우
- git pull 과 git push 를 원격 브랜치를 명시하지 않고 실행할 수 있습니다.
- git pull 만 실행하면, 자동으로 로컬 브랜치와 연결된 원격 추적 브랜치를 통해 원격 브랜치에서 변경 사항을 가져옵니다.
- git push 의 경우 로컬 브랜치의 이름과 연결된 원격 브랜치의 이름이 같아야 명령이 성공합니다.
- 원격 브랜치를 명시하지 않으면 연결된 원격 브랜치가 default 로 대치되는것일뿐, 다른 브랜치로부터 pull 혹은 다른 브랜치의 push 를 원한다면 원래처럼 원격 브랜치를 명시적으로 입력하면 됩니다.
- git status 명령을 실행하면 로컬 브랜치와 연결된 원격 추적 브랜치 간의 차이를 쉽게 확인할 수 있습니다. 예를 들어, Your branch is ahead of 'origin/main' by 3 commits. 와 같은 메시지를 볼 수 있습니다. (git fetch 를 하지 않았다면 원격 추적 브랜치와 원격 브랜치의 내용이 일치함을 확신할 수 없으므로 원격 브랜치와의 차이를 확인한다고는 보장할 수 없습니다.)
- git pull 과 git push 를 원격 브랜치를 명시하지 않고 실행할 수 있습니다.
- 트래킹 브랜치가 설정되지 않은 경우
- 원격 브랜치와의 연결이 명확하지 않기 때문에 git pull origin main, git push origin main 과 같이 상호작용할 원격 브랜치를 명시적으로 지정해야 합니다.
- git status 를 실행해도 특정 원격 추적 브랜치와의 차이를 확인할 수 없습니다.
현재 로컬 브랜치가 하나의 원격 브랜치하고만 상호작용 할 것이라면 트래킹 브랜치를 설정하는 것이 편리하지만, 그렇지 않고 여러 브랜치와 상호작용 할 예정이라면 트래킹 브랜치로 특정 브랜치를 설정해놓으면 오히려 뜻하지 않게 git pull, git push 와 같이 입력할 경우 의도하지 않은 브랜치와 상호작용 할 수 있어 불편할 수 있습니다.
pull 은 명시한 원격 브랜치의 내용을 현재 작업중인 브랜치에 pull 해옵니다. 반면 push 는 현재 작업중인 브랜치와 무관하게 명시된 원격 브랜치와 연관된 로컬 브랜치의 내용을 push 합니다.
git branch -vv 를 통해 원격 추적 브랜치와의 연결 상태를 확인할 수 있습니다.
트래킹 브랜치 설정 방법
로컬 브랜치를 원격 추적 브랜치와 연결하는 몇 가지 방법을 살펴보면 아래와 같습니다.
기존 브랜치를 원격 추적 브랜치와 연결하기
- 기존 브랜치를 원격 추적 브랜치와 연결합니다.
- git branch --set-upstream-to=<remote-tracking-branch> <local-branch>
git branch --set-upstream-to=origin/develop develop
새로운 브랜치를 원격 추적 브랜치와 연결하기
- 원격 추적 브랜치를 사용해 로컬 브랜치를 생성합니다.
- git switch -c <new-local-branch> <remote-tracking-branch>
git switch -c develop origin/develop
- 존재하지 않는 로컬 브랜치로 이동하려할 때 해당 브랜치의 이름과 일치하는 원격 추적 브랜치가 존재할 경우 해당 원격 추적 브랜치를 추적하는 로컬 브랜치를 생성합니다.
- git switch <new-local-branch>
git switch develop # 로컬에 origin/develop 원격 추적 브랜치가 존재하는 상황
728x90
반응형
'Dev > VCS' 카테고리의 다른 글
Git fast-forward merge, 3-way merge (0) | 2024.12.24 |
---|---|
Git 협업 방법 clone, fork (1) | 2024.12.17 |
Git 스테이징 영역 (2) | 2024.12.13 |
git pull vs git fetch (2) | 2024.12.13 |
Git 브랜치 전략 (3) | 2024.12.12 |