리모트 브랜치 참조와 업데이트

리모트 브랜치 참조

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

results matching ""

    No results matching ""