GitHub에 저장된 브랜치 확인하기
GiHub에 저장된 브랜치는 git branch -r 명령어를 통해 확인 가능하다.
예를 들어 GitHub url에 대한 alias를 origin-ssh로 지정한 후, 브랜치를 main, master 두개를 만들었다면 다음과 같이 출력된다.
$ git branch -r
origin-ssh/main
origin-ssh/master
GitHub branch 가져오기
GitHub에 저장된 브랜치는 git switch [branch name]을 통해 가져올 수 있다.
git switch [branch name] 을 하면 git은 먼저 로컬에 브랜치가 있으면 해당 브랜치로 스위치하고, 없으면 remote(Github)에서 해당 브랜치를 가져온다.
$ git branch -d main ### git branch 삭제
$ git switch main
'main' 브랜치가 리모트의 'main' 브랜치를 ('origin-ssh'에서) 따라가도록 설정되었습니다.
새로 만든 'main' 브랜치로 전환합니다
GitHub branch를 트래킹하는 브랜치로 checkout 하기
GitHub에 저장된 브랜치를 가져올 때 로컬에 해당 브랜치를 트래킹하는 브랜치가 만들어진다.
예를 들어 origin에 master brach를 git switch를 통해 가져오면 Local에는 origin/master와 master 브랜치가 생성된다. 이 때 우리가 작업하는 브랜치는 master 브랜치이다.
origin/master브랜치로 전환하기 위해서는 git switch는 사용할 수 없다. git switch는 로컬 브랜치만을 위한 명령어이기 때문이다. 만약 사용하면 다음과 같이 "fatal: a branch is expected, got remote branch 'origin/master'" 오류가 뜬다.
$ git switch origin/master
fatal: a branch is expected, got remote branch 'origin/master'
따라서 remote branch를 트래킹 하는 브랜치로 체크아웃 하기 위해서는 git checkout origin/master 명령어를 사용해야 한다.
git checkout origin/master
git fetch 사용해 GitHub Branch 를 트래킹하는 브랜치 최신 버전으로 업데이트하기
위에서 git checkout으로 Remote Branch를 트래킹하는 브랜치를 checkout하면 문제가 있다. 바로 remote branch를 트래킹하는 브랜치가 remote의 커밋이 업데이트 되었을 때 업데이트가 안되는 문제이다.
이를 최신 버전으로 업데이트 하기 위해서는 git fetch 명령어를 사용해야 한다. git fetch 나 git fetch [alias]를 사용하면 Remote Repository의 최신 커밋으로 Remote Branch를 트래킹하는 모든 브랜치들이 업데이트 된다. 예를 들어 git fetch origin 과 같이 사용할 수 있다.
git fetch
git fetch [alias]
만약 하나의 브랜치만 업데이트 하고 싶다면 git fetch [alias] [branch name]를 사용하면 된다. git fetch origin master 과 같이 사용할 수 있다.
git fetch [alias] [branch name]