Git 정리 란 무엇입니까?


88

실수로 일부 원격 브랜치를 정리했는데 그 결과가 무엇인지 잘 모르겠습니다 (Git Extensions에서 "Prune remote branch"버튼을 클릭하여 원격 브랜치를 삭제할 것이라고 생각했습니다).

공식 문서에는 "git-prune-개체 데이터베이스에서 도달 할 수없는 모든 개체 정리"라고 나와 있습니다. 나는 이것이 무엇을 의미하는지 정말로 이해하지 못한다. 나는 이것이 병합 된 분기를 제거했을 수 있다고 생각하지만 실제로는 확실하지 않습니다.



1
보고 가치가있을 수 있습니다 git gc: git-scm.com/docs/git-prune 너무.
kovac

답변:


93

Git Extensions의 "Prune remote branch"는 git remote prune명령을 실행 하여 원격에 분기가 더 이상 존재하지 않는 로컬 원격 추적 분기를 제거합니다.

여기를 참조하십시오 : https://git-scm.com/docs/git-remote#git-remote-empruneem


그래서 그것은 기본적으로 리모컨에 우선 순위를 부여하고 원격 지점에 맞게 로컬을 조정합니까?
Honey

3
@Honey 아니요, 로컬 원격 추적 분기를 제거하고 일반 분기는 건드리지 않습니다.
1615903

32

이것은 쓰레기를 수집합니다.

즉, 브랜치의 조상에서 객체 (커밋)에 도달 할 수없는 경우 git 데이터베이스에서 제거되어 더 이상 도달 할 수 없습니다.

이것은 단지 약간의 git 저장소를 정리하고 더 가볍게 만듭니다.


4
문서에 따르면 이와 같은 하우스 키핑 작업의 경우 기본적으로 git prune도 수행하는 a git gc보다 낫습니다 git prune.
kovac

1
Downvote :이 답변 (그리고 그 문제에 대한 질문) 혼란 git prunegit remote prune. 그들은 동일하지 않습니다. 후자는 실제로 더 이상 원격에 존재하지 않는 분기를 정리하고 로컬 분기는 그대로 둡니다.
JBert

12

prune은 repo-bound 라는 것을 아는 것이 중요합니다 . 모든 사람이 로컬 저장소를 여러 원격에 연결할 수 있다는 것을 아는 것은 아닙니다. 예를 들어 오픈 소스 프로젝트로 작업하고 포크를 통해 작업하도록 강제 할 때 유용합니다.

따라서 prune 명령에는 repo 이름이 필요합니다. 대부분의 경우 git remote prune origin이지만 repo를 무엇이든 호출 할 수 있습니다 origin..


2

마스터로 병합 한 후 제거되는 원격 기능 분기가있을 수 있습니다. 정리 방법으로 기능 분기를 삭제했을 수 있습니다. 그러나 삭제 된 분기를 로컬 시스템에 체크 아웃하고 상태를 추적으로 설정 한 경우 git pull은 해당 로컬 분기를 삭제하지 않습니다 (이미 서버에서 연결이 끊어 졌기 때문). 그런 종류의 로컬 고아 분기를 정리하려면 git prune명령이 도움이 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.