‘리포지터리(repository)’란?

“리포지터리(repository)”는 직역하면 “저장소”라는 뜻인데, IT 분야에서는 보통 버전 관리 시스템에서 코드와 파일을 보관하는 공간을 가리킵니다. 가장 흔히 마주치는 맥락은 Git과 GitHub이니, 그걸 중심으로 풀어서 설명할게요.

기본 개념

리포지터리(줄여서 “레포repo”)는 하나의 프로젝트와 관련된 모든 파일과, 그 파일들이 시간에 따라 어떻게 바뀌어 왔는지에 대한 전체 변경 이력을 함께 담고 있는 폴더라고 생각하면 됩니다.

일반 폴더와 결정적으로 다른 점은 “이력”입니다. 보통 폴더에서 파일을 수정하고 저장하면 이전 내용은 사라지지만, 리포지터리는 변경할 때마다 “이 시점의 상태”를 스냅샷처럼 기록해 둡니다. 그래서 언제든 과거의 특정 시점으로 되돌아갈 수 있고, “누가 / 언제 / 무엇을 / 왜 바꿨는지”가 모두 남습니다.

핵심 구성 요소

리포지터리를 이해하려면 함께 따라오는 몇 가지 개념을 알면 좋습니다.

커밋(commit) 은 변경 사항을 기록하는 “저장 버튼”에 해당합니다. 다만 단순 저장이 아니라, “이 변경을 왜 했는지”를 설명하는 메시지를 함께 남깁니다. 커밋 하나하나가 이력의 한 칸이 됩니다.

브랜치(branch) 는 작업 흐름을 갈래로 나누는 기능입니다. 원본은 그대로 두고 별도의 가지를 쳐서 실험하거나 새 기능을 만들다가, 잘 되면 다시 본줄기에 합칠 수 있습니다. 원고를 직접 고치지 않고 사본을 떠서 작업하는 것과 비슷합니다.

원격(remote) 저장소와 로컬(local) 저장소 의 구분도 중요합니다. 내 컴퓨터 안에 있는 게 로컬 리포지터리이고, GitHub 같은 서버에 올라가 있는 게 원격 리포지터리입니다. 둘을 주고받는 동작을 각각 푸시(push, 올리기)·풀(pull, 내려받기)이라고 부릅니다.

왜 쓰는가

리포지터리가 주는 실질적인 이점은 크게 세 가지입니다.

첫째, 되돌리기가 자유롭습니다. 실수로 망쳐도 이전 상태로 복구할 수 있어서 “일단 시도해보는” 부담이 줄어듭니다.

둘째, 협업이 쉬워집니다. 여러 사람이 같은 프로젝트를 동시에 작업해도 누가 무엇을 바꿨는지 추적되고, 충돌이 생기면 정리할 수 있는 장치가 있습니다.

셋째, 공개와 공유가 편합니다. GitHub 같은 곳에 리포지터리를 올려두면 다른 사람이 코드를 보거나, 내려받아 쓰거나, 개선 제안을 보낼 수 있습니다. 오픈소스 생태계가 이 방식으로 돌아갑니다.

다른 맥락에서의 “리포지터리”

코드 저장소 외에도 같은 단어가 쓰입니다. 패키지 리포지터리(npm, PyPI 등)는 다른 사람들이 만든 프로그램 부품을 모아둔 창고를 뜻하고, 데이터 리포지터리는 연구 데이터나 문서를 보관·공유하는 저장소를 가리킵니다. 공통점은 “체계적으로 모아두고 꺼내 쓰는 공간”이라는 본래 의미입니다.


Similar Posts