Git/GitHub: 로컬 저장소(Local Repository)와 원격 저장소(Remote Repository)
이번 글에서는 Git의 로컬 저장소와 원격 저장소에 대해 자세히 알아보겠습니다. Git은 소스 코드 관리 시스템으로, 로컬과 원격 저장소를 통해 프로젝트의 코드를 안전하게 보관하고 공유할 수 있습니다. 이 두 가지 요소를 잘 이해하고 활용한다면, 프로젝트의 개발 및 협업을 매우 효과적으로 진행할 수 있습니다.
1. Git의 주요 용어
- 로컬 저장소(Local Repository):
개인 컴퓨터에 위치한 파일 디렉토리입니다. 여기서 직접 코드 변경 작업을 하며, 변경 사항을 커밋합니다. 로컬 저장소는 개인이 직접 작업하는 공간으로, 이곳에서 버전 관리가 이루어집니다.
- 원격 저장소(Remote Repository):
네트워크 어딘가에 위치한 파일 디렉토리입니다. 여러 사람이 함께 접근하여 작업할 수 있으며, 주로 코드 공유와 협업에 사용됩니다. GitHub, Bitbucket 등 다양한 서비스에서 원격 저장소 기능을 제공합니다.
2. 로컬 및 원격 저장소 사용 예제
1) 새로운 로컬 저장소 초기화:
$ git init
현재 디렉터리를 git이 관리하는 새로운 로컬 리포지터리로 초기화합니다.
2) 기존 원격 저장소 클론하여 로컬 저장소 생성:
$ git clone [원격저장소주소]
원격 리포지터리의 모든 정보(버전 기록 포함)를 복사하여 내 PC(혹은 지정된 디렉터리)에 동일한 리포지터리를 생성합니다.
3) 로컬에서 작업한 내용을 스테이징 영역에 추가:
$ git add .
현재 디렉터리의 모든 변경사항들(.은 현재 디렉터리라는 의미)을 스테이징 영역에 추가합니다.
4) 스테이징 영역의 변경사항들을 커밋:
$ git commit -m "변경 내용"
스테이징 영역에 있는 변경사항들을 하나의 커밋으로 저장하며, "변경 내용"이라는 메시지를 함께 저장합니다.
5) 커밋된 변경사항들을 원격저장소에 푸시:
$ git push origin master
로컬 저장소의 커밋된 변경사항들을 원격 저장소의 master 브랜치에 업데이트합니다.
3. 원격저장소 관련 용어
- Fetch:
원격저장소의 최신 정보를 가져오지만 자동 병합은 하지 않는 것입니다. 이는 로컬에서 작업 중인 내용과 충돌이 발생할 수 있기 때문에, 개발자가 직접 병합 시점을 선택할 수 있도록 하는 기능입니다.
- Pull:
Fetch와 달리, 최신 정보를 가져오고 자동으로 병합도 합니다. 이는 원격 저장소의 최신 버전을 로컬에 적용하고 싶을 때 사용하는 명령어입니다.
- Push:
로컬에서 작성한 코드나 변경사항 등을 원격 저자장치에 업데이트하는 것입니다. 이는 로컬에서 완료된 작업을 원격 저장소에 공유하고 싶을 때 사용하는 명령어입니다.
4. 원격저장소 관련 용어 사용 예제
1) 최신 원격 정보 가져오기(Fetch):
$ git fetch origin
origin이라는 이름의 원격 저장소에서 최신 정보를 가져옵니다. 그러나 이 단계에서는 자동으로 병학되지 않습니다.
2) 최신 정보 가져오고 병합하기(Pull):
$ git pull origin master
origin이라는 이름의 원격 저장소에서 master 브랜치의 최신 정보를 가져와서 자동으로 현재 브랜치와 병합합니다.
3) 로컬 변경사항 원격에 업데이트하기(Push):
$ git push origin master
현재 브랜치의 변경 사항들을 origin이라는 이름의 원검 저장소의 master 브랜치로 업데이트합니다.
5. Git 협업 시 주요 용어
- 포크(Fork):
다른 사람이 만든 프로젝트(원본 프로젝트)를 내 계정으로 동일하게 복제하는 것입니다. 포크한 프로젝트에서 발생한 변경 사항은 다시 기존 프로젝트(원본)로 반영 요청(Pull Request)을 보낼 수 있습니다.
- 풀 리퀘스트(Pull Request):
한 브랜치의 변경 사항을 다른 브랜치에 병합하기 위해 요청하는 것입니다. 이는코드 리뷰 및 토론을 거친 후 병합이 이루어집니다. 일반적으로 포크한 레포지토리에서 원래 레포지토리로 변경 내용을 반영 요청할 때 사용합니다.
6. 협업 관련 용어 사용 예제
1) 원격 저장소 포크하기:
활용하려는 프로젝트를 선택한 후 웹 인터페이스에서 'Fork' 버튼을 클릭하면, 해당 프로젝트가 자신의 계정으로 복제됩니다.
2) 포크한 저장소를 로컬에 클론 하기:
$ git clone [자신의 계정에 있는 포크한 원격 저장소 주소]
위 명령어를 이용해 포크한 저장소를 로컬에 클론 합니다.
3) 변경 사항을 커밋하고 푸시하기:
$ git commit -m "변경 내용"
$ git push origin master
포크한 저장소에서 작업한 내용을 커밋한 후 원격 저장소에 푸시합니다.
4) 풀 리퀘스트 생성:
푸시한 후 원본 레포지토리의 웹페이지에서 'Pull request' 버튼을 클릭하면, 풀 리퀘스트를 생성할 수 있습니다.
이 글에서는 로컬 저장소와 원격 저장소, 그리고 이것들이 어떻게 협업에 사용되는지에 대해 알아보았습니다. 이것들을 이해하고 활용한 이 개념들은 Git 사용법의 핵심적인 부분이므로, 프로젝트 진행 시 큰 도움이 될 것입니다.