로컬 저장소와 원격 저장소
저장소는 크게 두 가지 유형이 있다. 컴퓨터에 저장되는 로컬 저장소와 호스팅 서비스(Github, Gitlab)에 저장되는 원격 저장소이다. Git 프로젝트를 시작할 때는 로컬 또는 원격 저장소 중 하나에서 시작할 수 있다.
로컬 저장소에서 시작하기
로컬 저장소에서 Git 프로젝트를 시작하려면 먼저 git init 명령어를 사용하여 컴퓨터에 로컬 저장소를 생성하고 최소 하나의 커밋을 만들어야 한다. 그런 다음 호스팅 서비스에 원격 저장소를 생성하고, 마지막으로 로컬 저장소의 데이터를 원격 저장소로 업로드해야한다. Git에서는 로컬 저장소에서 원격 저장소로 데이터를 업로드하는 과정을 push 또는 푸시라고 하며, 이를 위해 사용하는 명령어는 git push있다.
git push
원격 저장소에서 Git 프로젝트를 시작하려면 작업하려는 원격 저장소를 찾거나 호스팅 서비스에 새 원격 저장소를 생성할 수 있다.
원격 저장소에서 프로젝트를 시작하는 한 가지 예로, 친구가 원격 저장소를 가지고 있는 프로젝트에 기여해달라고 요청한 경우를 들 수 있다. 이 경우 친구에게 원격 저장소 위치를 알려달라고 요청한 다음, 컴퓨터에 복제하여 작업을 시작할 수 있다.
로컬 저장소와 원격 저장소 간의 상호 작용
로컬 저장소와 원격 저장소는 별도로 작동한다. 이들을 다룰 때는 두 저장소 간의 상호 작용이 자동으로 발생하지 않는다는 것을 이해하는 것이 중요하다. 즉, 로컬 저장소에서 원격 저장소로의 업데이트나 그 반대의 경우 자동으로 발생하지 않는다. 두 저장소 간에 실시간 연결은 없다. 어떤 변경 사항이든 명시적으로 명령을 실행해야만 반영된다.
원격 저장소를 사용하는 이유
원격 저장소는 Git 프로젝트를 작업할 때 매우 유용하고 중요한 역할을 한다. 주요 이유는 다음과 같다.
- 프로젝트 백업 : 컴퓨터 외의 다른 장소에 프로젝트를 쉽게 백업할 수 있다.
- 다중 컴퓨터 액세스 : 여러 대의 컴퓨터에서 프로젝트에 접근할 수 있다.
- 협업 : 다른 사람들과 함께 프로젝트를 공유하고 작업할 수 있다. (가장 주된 이유)
가령, "Book"이라는 프로젝트를 진행하고 있는데 로컬 저장소만 있다고 가정해 봅자. 만약 노트북이 도난당하거나 하드 드라이브가 고장 나면, 그동안 작업한 모든 내용을 잃게 된다. 원격 저장소는 이러한 상황에 대한 좋은 백업 수단이 된다.
또한, 원격 저장소를 이용하면 집과 회사 등 여러 대의 컴퓨터에서 프로젝트에 접근할 수 있다. 이렇게 , 호스팅 서비스 웹사이트에서 직접 변경하거나, 회사 노트북에 원격 저장소를 복제하여 로컬로 작업할 수 있다.
원격 저장소는 협업에도 매우 유용하다. 프로젝트 진행 상황을 확인하거나 기여하고 싶은 사람에게 원격 저장소에 대한 접근 권한을 부여할 수 있다. 다른 사람들은 원격 저장소를 복제하여 로컬 저장소를 만들거나, 호스팅 서비스 웹사이트에서 직접 내용을 볼 수 있다.
데이터와 함께 원격 저장소 만들기
다른 사람과 같이 협업을 원할이 하기 원한다면, 원격 저장소를 만들고 그곳에 데이터를 업로드해야 한다. 이 과정은 다음의 세 단계로 이루어진다.
- 호스팅 서비스에 원격 저장소 생성
- 로컬 저장소에 원격 저장소 연결 추가
- 로컬 저장소에서 원격 저장소로 데이터 업로드(푸시)
원격 저장소 만들기
호스팅 서비스에서 원격 저장소를 만들 때는 프로젝트 이름과 원격 저장소 URL을 지정해야 한다. 원격 저장소 URL은 자동으로 프로젝트 이름을 포함한다. 호스팅 서비스는 저장소에 대한 SSH URL과 HTTPS URL을 생성한다. 설정한 프로토콜에 따라 이 중 하나를 사용해야 한다. 원격 저장소 생성 과정은 완전히 호스팅 서비스 웹사이트에서 이루어진다. 따라서 구체적인 단계에 대한 자세한 내용은 사용하는 호스팅 서비스의 설명서를 참고해야 한다.
또한 원격 저장소를 공개(public) 또는 비공개(private)로 설정해야 한다. 이 설정은 호스팅 서비스에서 각 저장소별로 조정할 수 있다. 공개 저장소는 인터넷 사용자 누구나 볼 수 있지만, 비공개 저장소는 권한이 부여된 개인만 볼 수 있다. 어떤 경우든 저장소에 기여하려면 먼저 접근 권한을 받아야 한다.
로컬 저장소에 원격 저장소 연결 추가하기
로컬 저장소는 원격 저장소와 연결되어 있어야 데이터를 주고받을 수 있다. 이 연결을 원격 저장소 단축명 또는 단축명이라고 한다. 로컬 저장소는 여러 개의 원격 저장소와 연결될 수 있지만, 일반적으로는 하나의 원격 저장소만 연결하는 경우가 많다.
로컬 저장소가 처음 생성된 경우에는 원격 저장소와의 연결을 명시적으로 설정해야 한다. 이를 위해 git remote add 명령어를 사용하여 원격 저장소 URL을 단축명과 연결한다.
git remote add <단축명> <원격 저장소 URL>
- git remote: 로컬 저장소에 저장된 원격 저장소 연결 목록을 단축명으로 표시합니다.
- git remote -v: 로컬 저장소에 저장된 원격 저장소 연결 목록을 단축명과 URL과 함께 표시합니다.
원격 저장소로 푸시(Push)하기
로컬 브랜치를 원격 저장소로 푸시하려면 git push 명령어를 사용하고, 원격 저장소 단축명과 푸시할 브랜치 이름을 지정한다.
git push <단축명> <브랜치 이름>
git push 명령어를 실행하면 다음 두 가지 일이 발생한다.
- 원격 저장소에 원격 브랜치가 생성된다.
- 로컬 저장소에 원격 추적 브랜치가 생성된다.
참고: 원격 저장소로 데이터를 푸시하려면 인터넷에 연결되어 있어야 하고, 선택한 호스팅 서비스에 대한 SSH 또는 HTTPS 접근 권한이 있어야 한다.
git branch 명령어를 사용하여 로컬 브랜치 목록을 확인했듯이, git branch --all 명령어를 사용하면 로컬 브랜치와 원격 추적 브랜치 목록을 모두 확인할 수 있다.
git branch --all
브랜치 Push의 결과
이제 코드를 Push 했다. 몇 가지 주목할 점이 있다.
- 명령어 출력에서 Push가 성공적으로 완료되었음을 확인할 수 있다.
- 로컬 저장소의 refs 디렉토리를 확인하면 새로운 디렉토리 remotes가 생성되었음을 알 수 있다. 이 디렉토리는 원격 저장소와의 연결을 나타낸다.
- 호스팅 서비스에서 원격 저장소를 확인하면 Push한 브랜치의 커밋 목록을 볼 수 있다.
참조
https://www.oreilly.com/library/view/learning-git/9781098133900/
'Git' 카테고리의 다른 글
Git - 병합 충돌(Merge Conflicts) (0) | 2024.07.27 |
---|---|
Git - 복제와 가져오기(Cloning and Fetching) (0) | 2024.07.27 |
Git - 호스팅 서비스와 원격 리포지토리 (0) | 2024.07.24 |
Git - 병합(Merging) (0) | 2024.07.24 |
Git - 브랜치(Branches) (0) | 2024.07.23 |