Gemstone's Devlog

Git Prune에 대해 정리 본문

Git

Git Prune에 대해 정리

Gemstone 2022. 7. 18. 12:38

https://aroundck.tistory.com/6529

 

[git] Git Prune 에 대해 알아보자

[git] Git Prune 에 대해 알아보자 https://www.atlassian.com/git/tutorials/git-prune - git pull (fetch) 과정에서 ref lock 에러를 마딱뜨렸는데, 이 때 해결방법중 하나가 'git remote prune origin' 을 수행..

aroundck.tistory.com

 

가끔 소스트리로 git pull (fetch) 하는 과정에서 ref lock 에러를 위 블로그의 글쓴이처럼 자주 맞닥뜨렸었다.

이번에 다음의 명령어로 간단하게 해결했었는데 

$ git remote prune origin

이것의 정체를 알아보고자 한다.

 

git prune은 unreachable한 git object 들을 "local"에서 clean 하는 작업이라고 한다.

여기서 unreachable이란 git tree에 의해 참조되지 않는 gc 대상이 되는 dangling refs 들이다.

 

git prune은 보통 직접 수행되지 않으며,

git gc의 childe command라고 한다.

 

git prune을 수행할 때 --dry-run --verbose 옵션을 넣어 주면 실제로는 수행되지 않고, 어떻게 수행할 지 시뮬레이션을 볼 수 있다고 한다.

$ git remote prune --dry-run --verbose

 

git remote prune과 git fetch --prune도 git prune이 하는 일을 똑같이 한다.

remote에 존재하지 않는 refs를 지워버린 후에 fetch나 pull을 수행한다.

$ git fetch --prune

 

다시 말해, 

prune은 remote 의 것을 지우는 것이 아닌, local에서 remote를 ref하는 것 중 유효하지 않은 것을 제거하는 작업이다.