Git Prune 명령으로 Git 저장소 정리

John Wachira 2023년1월30일
  1. git prune 명령 사용
  2. git prune, git fetch --prunegit remote prune의 차이점
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 명령을 사용하여 HEADSixth 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 --prunegit remote prune의 차이점

git fetch --prunegit remote prune 명령은 유사한 기능을 가지고 있습니다. 우리는 그것들을 사용하여 원격 저장소에서 삭제된 분기에 대한 참조를 삭제합니다.

팀으로 작업할 때 편리하며 메인 브랜치에 병합된 후 삭제된 원격 브랜치를 스스로 제거하고 싶을 때 유용합니다.

git fetch --prune 명령은 다음의 조합입니다.

$ git fetch --all && git remote prune

prune을 시작하기 전에 원격 저장소에서 가져옵니다. 기본 git prune 명령은 앞에서 설명한 것처럼 로컬 개체를 삭제합니다.

작가: John Wachira
John Wachira avatar John Wachira avatar

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

관련 문장 - Git Prune