Git에서 로컬 분기 정리

Ashok Chapagai 2022년12월19일
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
Ashok Chapagai avatar Ashok Chapagai avatar

Ashok is an avid learner and senior software engineer with a keen interest in cyber security. He loves articulating his experience with words to wider audience.

LinkedIn GitHub

관련 문장 - Git Prune