tracking branch & upstream branch
tracking branch는 remote branch를 추적하는 local branch이다.
(local branch와 remote branch의 history는 서로 독립적이다)
예를 들어
$ git fetch origin
fetch 명령어를 사용해서 remote branch들을 최신 상태로 update를 한다면,
remote branch들은 <remote name>/<branch name> 형태로 Local에 업데이트 되는데,
이런 형태의 branch들은 직접 수정할 수 없다.
이 remote branch들을 local에서 사용, 수정할 수 있도록 해주는 것이
tracking branch이다.
tracking branch는 Local에서 원격 브랜치를 tracking할 수 있는 branch이다.
그리고 upstream branch는 tracking branch가 로컬에서 tracking하는 브랜치이다. (origin에 있는 브랜치)
- upstream branch: 원격 브랜치 (tracking branch가 tracking하는 브랜치)
- tracking branch: 로컬 브랜치로, 원격 브랜치를 tracking한다.
case 1: tracking branch를 만들려면 (같은 이름)
$ git switch --track <remote name>/<branch name>
# 예를들어 origin/dev branch가 있다면
# origin/dev 를 tracking하는 로컬 브랜치를 만들겠다는 의미
이렇게 switch --track을 이용해서 로컬 브랜치를 만들면,
remote branch의 이름과 같은 local branch를 만들게 된다.
예를 들어, 위에 말한 것처럼 fetch를 해서 원격 브랜치을 가져왔는데,
(pull = fetch + merge)
(fetch는 remote repository의 최신상태를 가져온다.)
해당 브랜치가 로컬에는 없다면, 이 원격 브랜치를 tracking할 로컬 브랜치를 만들어야 한다.
(반대로 로컬에서 브랜치를 먼저 만들고 push 했다면 원격 브랜치가 로컬 브랜치 이름을 따서 만들어진다.)
case 2 : 만약에 같은 이름의 브랜치가 아니라 로컬 브랜치의 이름을 다른 걸로 지어주고 싶다면
$ git switch -c <tracking branch name> <remote name>/<upstream branch name>
# switch -c 는 브랜치 만들고 해당 브랜치로 이동한다.
case 3 : 만약 로컬에 따로 존재하는 브랜치가, 원격 브랜치를 추적하게 하려면
$ git switch --set-upstream-to <upstream branch>
$ git swich -u <upstream branch>
# 두 명령어는 같은 의미다.
'개발👩💻 > git' 카테고리의 다른 글
git: stashing과 cleaning (0) | 2021.04.17 |
---|---|
git: 로그 상대 참조 (^, ~) (0) | 2021.04.17 |
git: gitignore 파일 규칙 (0) | 2021.04.17 |
git: rebase 심화 (rebase --onto: branch 부모의 부모에 대한 rebase) (0) | 2021.04.17 |
git: branch와 status관련 명령어 (branch, switch, diff, rm, restore, reset) (0) | 2021.04.17 |