리모트 브랜치 참조와 업데이트
리모트 브랜치 참조
git pull
또는 git fetch
명령을 실행하면 Git은 로컬 저장소에서 리모트 브랜치에 대한 참조를 만든다. 하지만 간혹 리모트 브랜치에 삭제된 브랜치를 로컬에서 여전히 참조하는 경우가 있다.
리모트 브랜치 조회
$ git branch -r
origin/HEAD -> origin/master
origin/master
origin/myApp2/develop
origin/myApp2/feature-showTimList
origin/myApp2/master
모든 브랜치 조회
로컬 저장소와 원격 저장소의 모든 브랜치를 조회할 때는 다음과 같이 한다.
$ git branch -a
master
* myApp2/develop
myApp2/feature-showTimList
myApp2/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/myApp2/develop
remotes/origin/myApp2/feature-showTimList
remotes/origin/myApp2/master
리모트 브랜치 상태보기
git remote show (리모트 저장소)
git remote show origin
위와 같이 명령어를 입력하면
$ git remote show origin
* remote origin
Fetch URL: [email protected]:mylko72/myApp.git
Push URL: [email protected]:mylko72/myApp.git
HEAD branch: master
Remote branches:
master tracked
refs/remotes/origin/myApp/dev stale (use 'git remote prune' to remove)
refs/remotes/origin/myApp/topic stale (use 'git remote prune' to remove)
refs/remotes/origin/myApp/version2 stale (use 'git remote prune' to remove)
myApp2/develop tracked
myApp2/feature-showTimList tracked
myApp2/master tracked
Local branch configured for 'git pull':
master merges with remote master
Local refs configured for 'git push':
master pushes to master (up to date)
myApp2/develop pushes to todoApp2/develop (fast-forwardable)
myApp2/feature-showTimList pushes to todoApp2/feature-showTimList (up to date)
myApp2/master pushes to todoApp2/master (up to date)
리모트 브랜치와 로컬 브랜치의 관계를 상세히 볼수 있다.
다시 말해 어떤 로컬 저장소가 리모트 저장소와 track 상태에 있는지 확인할 수 있다.
여기서 눈여겨 볼 부분은 리모트 브랜치에서 상태가 stale로 표시된 부분이다.
리모트 저장소에 더이상 유효하지 않은 브랜치(삭제된 브랜치)를 로컬에서 계속 참조하고 있음을 알 수 있다.
리모트 브랜치 참조 업데이트
git remote prune
git remote prune
은 리모트 브랜치의 더 이상 유효하지 않은 참조를 깨끗이 지우는 명령어 이다.
$ git remote prune origin
$ git remote update --prune
git fetch -p
git fetch -p
명령어는 로컬 저장소를 최신 정보로 갱신(리모트 저장소와 동기화)하며 자동적으로 더이상 유효하지 않은 참조를 제거한다.
$ git fetch -p
From github.com:mylko72/myApp
x [deleted] (none) -> origin/myApp/dev
x [deleted] (none) -> origin/myApp/topic
x [deleted] (none) -> origin/myApp/version2