HOWTO · Git

Git에서 로컬 분기 정리

이 문서에서는 더 이상 원격 저장소에 없는 로컬 분기를 제거하는 방법을 보여줍니다.

이 페이지의 내용

프로젝트에 로컬 시스템에서 생성되었지만 원격 저장소에는 존재하지 않는 많은 분기가 있다고 가정해 보겠습니다. 원격 저장소와 동기화되지 않은 모든 로컬 분기를 쉽게 제거할 수 있지만 그 전에 로컬 시스템에서 사용 가능한 모든 분기를 확인하고 싶을 수 있습니다. git branch를 실행할 수 있습니다.

이제 모든 원격 분기를 나열하려면 git branch -r 명령을 사용할 수 있습니다. 하나의 명령으로 두 결과를 모두 얻으려면 git branch -a 명령을 사용할 수 있습니다. 분기가 확인되면 기사의 나머지 부분을 계속 진행할 수 있습니다.

Git에서 로컬 분기 제거(정리)

다음 명령을 쉽게 실행하여 원격 저장소에 없는 추적 분기를 정리할 수 있습니다.

git remote prune origin

위의 명령은 원격 저장소에 없는 추적 분기를 제거하지만 로컬 분기는 아직 삭제되지 않습니다. 실제로 로컬 브랜치를 삭제하려면 아래에 설명된 추가 단계를 수행해야 할 수 있습니다.

  • 자세한 출력으로 모든 분기를 나열합니다.
    git branch -vv
    

    이제 gone 상태가 원격 저장소에서는 사용할 수 없지만 로컬 시스템에서는 사용할 수 있는 분기에 놓이기 때문에 origin/.* : gone]에 대한 출력을 grep으로 파이프 아웃합니다.

    grep 'origin/.*: gone]'
    
  • 다시 출력을 아래와 같이 awk(포맷하기에 매우 좋은 도구)로 파이프합니다.
    awk '{print $1}'
    
  • 마지막으로, 한 명령의 출력을 가져와 다른 명령의 인수로 사용해야 할 때 사용할 수 있는 xargs로 출력을 파이프하려고 합니다. 아래와 같이 로컬 브랜치를 삭제하기 위해 2단계의 출력을 git branch -d 명령으로 전달하면 안 됩니다.
    xargs git branch -d 
    

따라서 원격 저장소에서 사용할 수 없는 모든 로컬 분기를 정리하고 삭제하는 마지막 두 라이너 명령은 다음과 같습니다.

git remote prune origin

위의 명령을 실행한 후 아래 명령을 실행하여 원격 저장소에서 사용할 수 없는 로컬 분기를 삭제할 수 있습니다.

git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d