지난 글에서 로컬 리포지토리와 원격 리포지토리라는 두 가지 유형의 리포지토리에 대해 설명했다. 로컬 리포지토리는 컴퓨터에 저장되는 반면 원격 리포지토리는 클라우드에 있는 호스팅 서비스에 저장된다. 또한 호스팅 서비스는 Git을 사용하여 프로젝트를 호스팅하는 서비스를 제공하는 회사라고 언급했다.
이 책에서는 세 가지 주요 Git 호스팅 서비스인 GitHub, GitLab, Bitbucket에 대한 정보를 제공한다. 로컬 리포지토리와 호스팅 서비스의 원격 리포지토리 간에 데이터를 전송하려면 SSH 또는 HTTPS를 사용하여 연결 및 인증해야 한다.
git push, git clone, git fetch, git pull과 같은 명령어를 사용하여 원격 리포지토리에서 데이터를 업로드 및 다운로드할 수 있다. 이 명령어를 사용하고 원격 리포지토리에 연결하려면 사용하려는 프로토콜에 대한 인증 정보를 준비해야 한다.
이 장에서는 먼저 호스팅 서비스를 선택한 다음 HTTPS 또는 SSH를 통해 원격 리포지토리에 대해 인증 정보를 설정한다.
호스팅 서비스 계정 설정
앞서 언급했듯이 이미 사용하고 있는 호스팅 서비스가 있고 이 책의 연습에 사용하려는 경우 해당 호스팅 서비스 웹사이트에서 계정에 간편하게 로그인만 하면 된다.
호스팅 서비스를 처음 사용하는 경우 어떤 서비스를 사용할지 선택하고 계정을 만들어야 한다. 세 가지 주요 호스팅 서비스는 GitHub, GitLab, Bitbucket이다.
어떤 서비스를 사용할지 잘 모르겠다면 이 책의 레인보우 프로젝트 예시 출력에 사용된 서비스이기도 하여 가장 인기가 많은 GitHub를 사용하는 것이 좋다.
인증 자격 증명 설정
원격 리포지토리를 만들 때 다음 두 가지 방법으로 변경할 수 있다.
- 호스팅 서비스 웹사이트를 통해 로그인하여 직접 변경한다.
- 로컬 리포지토리에서 변경 사항을 만들어 호스팅 서비스의 원격 리포지토리에 업로드한다.
두 경우 모두 인증, 즉 본인 확인이 필요하다. 인증은 누가 호스팅 서비스 계정에 로그인하고 누가 원격 리포지토리에 변경 사항을 업로드할 수 있는지 제어하는 데 중요하다.
첫 번째 경우에는 사용자 이름 또는 이메일 주소와 비밀번호를 사용하여 호스팅 서비스 계정에 인증하고 로그인한다. 하지만 두 번째 경우는 어떨까요? 호스팅 서비스는 로컬 리포지토리에서 원격 리포지토리로 업로드를 허용해야 하는지 어떻게 알 수 있을까?
답은 선택한 프로토콜을 통해 인증해야 한다는 것입니다. 이 장에서는 HTTPS 및 SSH 프로토콜을 다루겠다. 이 중 하나만 설정하면 되며 원하는 것을 선택할 수 있다.
HTTPS 사용
HTTPS 프로토콜은 사용자 이름과 일종의 비밀번호(또는 인증 자격 증명)를 사용하여 원격 리포지토리에 안전하게 연결할 수 있도록 한다. 과거에는 모든 호스팅 서비스에서 HTTPS 인증을 위해 호스팅 서비스 계정에 로그인하는 데 사용하는 비밀번호(계정 비밀번호라고 함)를 사용할 수 있었다. 그러나 GitHub 및 Bitbucket은 더 이상 이를 허용하지 않고 사용자가 다른 인증 자격 증명을 만들도록 요구한다. GitHub에서는 이 인증 자격 증명을 개인 액세스 토큰이라고 부르고, Bitbucket에서는 앱 비밀번호라고 한다. GitLab에서는 계정 비밀번호를 사용하여 여전히 인증할 수 있다.
호스팅 | 사용자 정보 | 계정/비밀번호 |
GitHub | 이메일 주소 또는 사용자 이름 | 개인 액세스 토큰 |
GitLab | 이메일 주소 또는 사용자 이름 | 계정 비밀번호 |
Bitbucket | 이메일 주소 또는 사용자 이름 | 앱 비밀번호 |
SSH 사용
SSH는 HTTPS보다 안전하고 편리한 또 다른 인증 방법이다. SSH를 사용하려면 먼저 로컬 컴퓨터에 SSH 키를 생성해야 합니다. SSH 키는 두 개의 파트로 구성된다.
- 공개 키 : 원격 리포지토리 소유자에게 제공하는 키
- 개인 키 : 로컬 컴퓨터에 저장하고 비밀번호로 보호하는 키
원격 리포지토리 소유자는 공개 키를 사용하여 로컬 컴퓨터에서 오는 모든 요청을 인증한다. 개인 키는 로컬 컴퓨터에서만 사용되므로 비밀번호를 안전하게 보관하는 것이 중요하다.
SSH 키를 생성하는 방법은 다음과 같다.
- 터미널을 연다.
- 다음 명령어를 실행합니다.
ssh-keygen
- 키 파일 이름을 입력하라는 프롬프트가 표시됩니다. 기본값은 id_rsa이며, 원하는 경우 다른 이름을 지정할 수도 있다.
- 엔터 키를 누른다.
- 개인 키에 대한 비밀번호를 입력하라는 프롬프트가 표시된다. 비밀번호를 설정하는 것이 좋지만 필수는 아니다. 비밀번호를 설정하지 않으면 누구나 개인 키를 사용하여 로컬 컴퓨터에 액세스할 수 있다.
- 엔터 키를 누른다.
- 키가 생성됩니다. id_rsa (또는 지정한 이름) 및 id_rsa.pub라는 두 개의 파일이 현재 디렉토리에 생성된다.
다음은 SSH 키를 사용하여 원격 리포지토리에 연결하는 방법이다.
1. 원격 리포지토리의 URL 복사
원격 리포지토리의 URL은 GitHub, GitLab 또는 Bitbucket 계정 페이지에서 찾을 수 있다. URL은 일반적으로 다음과 같은 형식이다.
git@github.com:<username>/<repository-name>.git
여기서:
- <username>은 GitHub 계정 사용자 이름이다.
- <repository-name>은 리포지토리 이름이다.
예를 들어, 다음은 GitHub에 있는 "your-repository"라는 이름의 리포지토리의 URL이다.
git@github.com:your_username/your-repository.git
2. SSH 키를 원격 리포지토리에 추가
다음 명령어를 사용하여 로컬 컴퓨터의 SSH 공개 키를 원격 리포지토리에 추가한다.
ssh-keygen -t rsa
여기서:
- <remote-repo-url>은 위에서 복사한 원격 리포지토리의 URL이다.
예를 들어 다음 명령어는 "your-repository"라는 이름의 GitHub 리포지토리에 SSH 공개 키를 추가한다.
ssh-keygen -t rsa git@github.com:your_username/your-repository.git
3. 원격 리포지토리에 대한 SSH URL 확인
원격 리포지토리에 대한 SSH URL을 확인하려면 다음 명령어를 실행한다.
git remote -v
출력은 다음과 같을 것이다.
origin git@github.com:your_username/your-repository.git (ssh)
4. 로컬 브랜치를 원격 리포지토리에 푸시
이제 로컬 브랜치를 원격 리포지토리에 푸시할 수 있습니다. 다음 명령어를 실행한다.
git push origin <branch-name>
여기서:
- <branch-name>은 푸시하려는 로컬 브랜치의 이름이다.
예를 들어 다음 명령어는 "main"이라는 로컬 브랜치를 "your-repository"라는 이름의 GitHub 리포지토리에 푸시한다.
git push origin main
이제 SSH를 사용하여 로컬 리포지토리를 원격 리포지토리에 연결하고 변경 사항을 푸시할 수 있다.
문서 참조
https://www.oreilly.com/library/view/learning-git/9781098133900/
'Git' 카테고리의 다른 글
Git - 복제와 가져오기(Cloning and Fetching) (0) | 2024.07.27 |
---|---|
Git - 원격 저장소(Remote Repository) 생성 및 푸시(Push) (0) | 2024.07.24 |
Git - 병합(Merging) (0) | 2024.07.24 |
Git - 브랜치(Branches) (0) | 2024.07.23 |
Git - 커밋(Commit) (0) | 2024.07.23 |