지극히 개인적인 공부 노트/깃(Git)

[Git] 깃허브 이용하기

AS J 2021. 6. 24. 02:03

깃허브란 깃의 원격 저장소를 제공하는 서비스로, 기존에 깃배시(git bash) 등을 통해 파일을 저장하고 관리하던 컴퓨터(지역 저장소)의 '백업' 역할을 합니다. 기존에 이용하던 컴퓨터가 손상되거나, 깃을 이용하던 파일 혹은 디렉터리가 삭제되었을 경우 등을 대비해 깃허브와 같은 원격 저장소를 일종의 백업 공간으로 이용할 수 있습니다.

 또, 인터넷으로 접속 가능하기 때문에 깃허브에 업로드 된 파일을 접근이 허용된 협업자와 함께 수정하는 재업로드 또는 커밋(버전 추가)하는 것이 가능합니다. 이런 부분에선 프로젝트 '협업'도 가능하게 합니다.

이외에도 자신의 개발 이력을 남기는 것, 다른 개발자의 소스를 살펴보는 것 등이 가능하고, 오픈 소스에 참여할 수도 있습니다. 대표적으로 부트스트랩(bootstrap)이 오픈 소스에 여러 사용자들이 참여하는 예시입니다. 그렇다면 이런 깃허브는 어떻게 이용할 수 있을까요? 깃허브를 시작하는 기초적인 단계를 아래에 정리해봤습니다.

 

 

1. 깃허브 가입

깃허브 사이트: https://github.com/

 

GitHub: Where the world builds software

GitHub is where over 65 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

위 사이트에 접속한 후, 깃허브 계정이 없다면 화면 오른쪽 위 [Sign up] 버튼을 눌러서 회원가입을 진행합니다. 깃허브는 유료 계정과 무료 계정을 제공하는데, 개인적인 프로젝트와 개인 공부 등을 위해서 가입하는 것이라면 무료 계정으로 충분합니다. 유료와 무료의 큰 차이점은 무료 계정의 경우 협업을 최대 3명까지 진행할 수 있고, 유료 계정은 협업 인원 제한이 없다는 것입니다.

 

2. 깃허브에 원격 저장소 만들기

로그인을 한 후에는 화면 오른쪽 위 [+] 항목을 클릭합니다. 여기서 [New repository]를 통해 새로운 저장소를 만들 수 있습니다.

작성일자(2021년 6월 24일)를 기준으로 [New repository]를 클릭하면 위와 같이 저장소 생성 화면이 나옵니다. 아래 표는 저장소 생성 화면 속 요소에 대한 설명입니다.

번호 요소 설명
1 Repository name 저장소 이름을 입력하는 칸입니다. 영문, 숫자, 언더바(_), 붙임표(-) 등을 사용할 수 있고, 공백 입력 시 깃허브에서 자동으로 붙임표(-)로 바꿉니다.
2 Description 저장소에 대한 간단한 설명입니다. 작성 필수는 아닙니다.
3 Public / Private 저장소 공개 여부를 선택합니다. 2019년 1월부터 무료 계정도 비공개 저장소를 만들 수 있게 되었습니다.
4 Add a README file 저장소에 대한 소개와 설명을 작성하는 README 파일을 자동으로 만들려면 체크합니다.
5 Add .gitignore 체크하면 언어 선택 목록이 나오는데, 어떤 언어와 관련된 것들을 .gitignore 파일에 지정할지 선택하는 것입니다. 예를 들어, 'C++'을 선택한다면 C++에서 사용하는 컴파일된 라이브러리나 실행 파일을 깃에서 무시하도록 자동으로 .gitignore 파일을 만들어 줍니다.
6 Choose a License 체크하면 라이선스 선택 목록이 나오는데, 오픈 소스 프로젝트를 위한 저장소를 만들 경우에 해당 오픈 소스의 라이선스를 선택합니다.

이렇게 원격 저장소를 만든다면 HTTPS 주소를 통해 언제든 깃허브 저장소에 접속할 수 있고, 원격 저장소의 주소는 다음과 같이 정해집니다.

https://github.com/아이디/저장소명

 

3. 지역 저장소(개인 컴퓨터 내 깃 디렉터리)를 원격 저장소(깃허브)에 연결하기

깃허브에 연결할 지역 저장소가 있다면 깃배시 터미널 창을 통해 컴퓨터 내 디렉터리(지역 저장소)를 깃허브에 연결할 수 있습니다. 다음 명령을 통해 연결할 수 있으며, 여기서 origin은 원격 저장소의 master 브랜치와 같은 의미라고 생각하면 됩니다.

$ git remote add origin 복사한 원격 저장소 HTTPS 주소

오류 메시지가 없이 프롬프트($)가 나타난다면 제대로 실행된 것이고, 아래 명령을 통해 원격 저장소에 제대로 연결되었는지 확인할 수 있습니다.

$ git remote -v

 

4. 원격 저장소에 올리기 및 내려받기

1) 원격 저장소에 파일 올리기

지역 저장소의 브랜치를 원격 저장소의 master 브랜치(origin)로 푸시하라는 명령은 다음과 같으며, 여기서 '-u' 옵션은 지역 저장소와 원격 저장소의 브랜치를 연결하는 처음 한 번만 사용하면 됩니다. 연결한 후, 파일을 다시 푸시할 경우에는 '$ git push'만 입력하면 됩니다.

$ git push -u origin master

 

2) 원격 저장소에서 파일 내려받기

파일을 지역 저장소가 아닌 원격 저장소에서 수정한 경우에 지역 저장소에 있던 파일은 아직 수정이 되기 전 상태입니다. 이런 경우 원격 저장소에서 파일을 내려받아야 하며, 다음 명령을 통해 수행이 가능합니다. 이미 브랜치 연결이 되어있는 경우에는 '$ git pull'만 입력해도 됩니다.

$ git pull origin master

 

5. 깃허브에 SSH 원격 접속하기

일반적으로 깃허브 원격 저장소에 파일을 올리는 등의 작업을 하기 위해서는 아이디와 비밀번호를 입력해서 저장소 계정 주인임을 인증해야 합니다. 그리고 터미널 창에서 깃허브를 사용하다 보면 아이디와 비밀번호를 요구하는 경우가 많다고 합니다. 이런 번거로움을 줄이기 위해 프라이빗 키(Private Key)와 퍼블릭 키(Public Key)를 한 쌍으로 묶어 사용하는 강화된 보안 방식인 SSH(Secucre Shell)를 사용합니다. 간략하게 설명하면 여기서 프라이빗 키는 개인 컴퓨터(지역 저장소)에, 퍼블릭 키는 깃허브(원격 저장소)에 보관하면서 서로 키를 통해 인증을 하는 방식이고, SSH로 깃허브에 접속하는 방법 순서는 다음과 같습니다.

1) 터미널 창에서 다음 명령을 입력합니다.

$ ssh-keygen

2) 명령을 실행한 후, 파일 이름을 입력하라는 줄이 나오는데 그냥 엔터를 누르시면 됩니다. 그렇게 총 3번 엔터를 누르면 SSH를 통해 접속할 수 있는 비밀번호가 생성되며, 결과 화면 중 'Your identification'으로 시작해서 'id_rsa.'으로 끝나는 줄이 프라이빗 키 경로, 'Your public key'로 시작해서 'id_rsa.pub.'으로 끝나는 줄이 퍼블릭 키 경로입니다.

3) 이제 퍼블릭 키를 깃허브에 올려야 하는데, 터미널 창에서 홈(~)의 .ssh 디렉터리 내에서 퍼블릭 키를 확인할 수 있습니다. 다음과 같이 입력하면 퍼블릭 키가 터미널 창에 결과 화면으로 나옵니다.

$ cd ~/.ssh
$ cat id_rsa.pub

4) 결과 화면으로 나온 퍼블릭 키를 복사한 후, 로그인 한 깃허브의 오른쪽 위 화면에서 사용자 아이콘을 클릭합니다. 사용자 아이콘을 클릭하면 나오는 목록 중 [Settings]를 누른 후, 여러 설정 메뉴 중 [SSH and GPG keys]를 클릭, 오른쪽에 나타난 [New SSH key]를 클릭합니다. 그러면 아래와 같은 화면이 나올 것입니다.

5) SSH에서 퍼블릭 키는 여러 개를 등록할 수 있기 때문에 Title 화면에 현재 등록하는 SSH 퍼블릭 키를 쉽게 알아볼 수 있도록 제목을 붙이고( ex) my notebook), 아래 Key 칸에 복사한 퍼블릭 키를 붙여 넣습니다. 이후 [Add SSH key]를 클릭하면 SSH 키가 추가됩니다.(비밀번호를 한 번 확인하는 화면이 나오기도 하는데, 깃허브 비밀번호를 입력하면 됩니다.)

6) 이렇게 키 등록이 완료된다면 HTTPS 주소를 통해 깃허브의 원격 저장소에 연결한 방법과 똑같이, 이번엔 SSH 주소를 복사하고 터미널 창에서 아래 명령을 실행하면 됩니다.

$ git remote add origin 복사한 원격 저장소 SSH 주소