Git Prune 명령으로 Git 저장소 정리
이 기사에서는 git prune
명령과 그 목적에 대해 설명합니다. 우리는 Git이 우리 데이터에 대해 극도로 주의를 기울이고 있다는 것을 알고 있습니다.
커밋과 같은 데이터를 삭제해도 Git은 이를 쉽게 잃지 않습니다. 이로 인해 시스템에 오래된 데이터가 축적됩니다.
여기에서 git prune
명령이 실행됩니다.
우리는 git prune
명령을 고아 또는 연결할 수 없는 Git 개체를 정리하는 데 사용하는 Git의 하우스키핑 유틸리티라고 말할 수 있습니다. 도달할 수 없는 객체에 대해 이야기할 때 현재 참조가 액세스할 수 없는 저장소의 객체입니다.
좋은 예는 git reset <commit ID>
명령을 사용하여 이전 커밋으로 롤백하는 경우입니다. Git은 삭제된 커밋을 매달린 개체로 저장합니다.
이러한 데이터를 제거하기 위해 git prune
명령을 사용합니다.
git prune
명령 사용
git prune
명령에는 아래와 같은 몇 가지 유용한 옵션이 있습니다.
$ git prune --dry-run
위의 명령을 실행하여 명령의 출력을 얻습니다. prune
을 실행하지 않습니다.
$ git prune --verbose
위의 명령은 모든 작업과 관련 개체를 보여줍니다.
$ git prune --progress
위 명령어를 사용하여 git prune
의 진행 상황을 확인합니다.
$ git prune --expire <time>
위의 명령을 사용하여 지정된 시간(<time>
)보다 오래된 객체를 삭제합니다.
개념을 더 잘 이해하기 위해 실제 예를 살펴보겠습니다. git log
명령을 실행하여 로컬 저장소의 커밋 기록을 확인하겠습니다.
$ git log --oneline
git reset
명령을 사용하여 HEAD
가 Sixth Update
에 있도록 한 커밋만큼 롤백하겠습니다.
$ git reset --hard 27bd68b
HEAD is now at 27bd68b Sixth Update
삭제된 커밋을 찾아보자.
$ git fsck --lost-found
삭제된 커밋이 첫 번째 커밋입니다. 처음 7자로 확인할 수 있습니다.
git prune
명령을 실행하기 전에 now
보다 오래된 항목을 만료시키는 reflog
를 실행해야 합니다.
$ git reflog expire --expire=now --expire-unreachable=now --all
어떤 변경 사항이 발생하는지 확인하려면 명령을 테스트 실행
하는 것이 좋습니다.
$ git prune --dry-run
이제 prune
명령을 실행할 수 있습니다.
$ git prune --verbose --progress --expire=now
댕글링 커밋이 아직 저장소에 있는지 확인하겠습니다.
$ git fsck --lost-found
git prune
, git fetch --prune
및 git remote prune
의 차이점
git fetch --prune
및 git remote prune
명령은 유사한 기능을 가지고 있습니다. 우리는 그것들을 사용하여 원격 저장소에서 삭제된 분기에 대한 참조를 삭제합니다.
팀으로 작업할 때 편리하며 메인 브랜치에 병합된 후 삭제된 원격 브랜치를 스스로 제거하고 싶을 때 유용합니다.
git fetch --prune
명령은 다음의 조합입니다.
$ git fetch --all && git remote prune
prune
을 시작하기 전에 원격 저장소에서 가져옵니다. 기본 git prune
명령은 앞에서 설명한 것처럼 로컬 개체를 삭제합니다.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn