04. GitHub로 백업하기

2020. 2. 5. 01:53GIT

원격 저장소와 깃허브

  지금까지 우리는 자신의 컴퓨터에서 작업한 뒤 그 컴퓨터 안에 커밋을 저장했습니다. 이 저장소를 지역 저장소(local repository)라고 부릅니다. 작업 내용을 지역 저장소에만 저장하는 것은 안전하지 않기 때문에 작업하는 컴퓨터가 아닌 다른 곳에 저장 공간을 마련해야 합니다.

1. 원격 저장소란

 원격 저장소는 지역 저장소가 아닌 컴퓨터나 서버에 만든 저장소를 말합니다. 원격 저장소는 지역 저장소와 연결되어 있으면서 '백업'과 '협업'이라는 중요한 역할을 합니다. 원격 저장소를 직접 구축할 수도 있지만 만들고 유지하는 것이 쉽지 않기 때문에 인터넷에서 원격 저장소를 제공하는 서비스를 주로 사용합니다. 그중 깃과 관련해 가만 많이 사용하는 서비스가 바로 깃허브입니다.

 

2. 깃허브로 할 수 있는 일들

01. 원격 저장소에서 깃을 사용할 수 있습니다.

 

02. 지역 저장소를 백업할 수 있습니다.

 

03. 협업 프로젝트에 사용할 수 있습니다.

 

04. 자신의 개발 이력을 남길 수 있습니다.

  최근에는 개발자를 뽑을 때 깃허브 계정을 요구하는 곳들이 있습니다. 지원자가 어떤 주제에 관심이 많은지, 어떤 것들을 개발했는지, 그리고 무엇을 개발 중인지 한눈에 확인할 수 있기 때문입니다. 깃허브는 개발자가 자신의 개발 이력을 관리하기 좋은 플랫폼입니다.

 

05. 다른 사람의 소스를 살펴볼 수 있고, 오픈 소스에 참여할 수도 있습니다.

 


깃허브 시작하기

1. 깃허브에 가입하기

01. www.github.com에 에 접속한 후 [Sign up]을 누릅니다.

 

02. 필수 입력 사항(*)을 모두 입력하고, 화면 아래쪽의 'Verify account'에 있는 문제를 풀어야 합니다. 문제해결이 끝나면 [Create an account]를 누릅니다.

 

03. 깃허브에는 유료 계정과 무료 계정이 있습니다. 깃허브를 공부하거나 개인적인 프로젝트를 관리할 목적이라면 무료 계정으로 충분하므로 'Free'를 선택하고 [Continue]를 누릅니다. (무료 계정은 3명까지 협업할 수 있지만 유료 계정은 무제한 협업이 가능합니다.)

 

04. 설문에 답한 후 [Submit]을 누릅니다. 설문에 답하기 싫다면 [skip this step]을 눌러 건너뛰어도 됩니다.

 

05. 가입할 때 입력했던 메일 주소로 인증 메일이 도착했을 것입니다. 메일 메시지 안에 있는 [Verify email address]를 눌러서 인증하면 회원가입이 끝납니다.

 

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

01. 깃허브에 로그인한 후 화면 오른쪽 위에 있는 [+]를 누르고 [New repository]를 선택합니다.

원격 저장소 만들기

 

02. 저장소 이름을 비롯해서 필요한 항목을 기입하고 [Create repository]를 누릅니다.

원격 저장소 만들기 2

1. Repository name : 저장소 이름을 입력합니다. 영문과 숫자, 언더바(_), 붙임표(-) 등을 사용할 수 있으며, 공백이 포함되어 있을 경우 깃허브에서 공백을 자동으로 붙임표(-)로 바꿉니다.
2. Description : 저장소에 대한 간단한 설명을 입력합니다. 이 부분은 옵션이므로 반드시 입력하지 않아도 됩니다.
3. Public / Private : 저장소를 공개로 할지 비공개로 할지 선택합니다. 공개 저장소는 주소만 알고 있으면 누구나 볼 수 있습니다. 만일 다른 사람에게 보이지 않는 프로젝트를 관리하고 싶다면 저장소를 만들 때 비공개(private) 저장소로 만들면 됩니다.
4. Initialize this repository with a README : 저장소에 대한 소개와 설명을 작성하는 README 파일을 자동으로 만들려면 체크 합니다. README 파일은 06장에서 공부합니다. 여기에서는 체크하지 마세요.
5. Add .gitignore : [를 누른 후 어떤 언어와 관련된 것들을 .gitignore 파일에 지정할지 선택합니다. 예를 들어, 'C++'을 선택한다면 C++에서 사용하는 컴파일된 라이브러리나 실행 파일을 깃에서 무시하도록 자동으로 .gitignore 파일을 만들어 줍니다.
6. Add a License : 오픈 소스 프로젝트를 위한 저장소를 만들 경우 해당 오픈 소스의 라이선스를 선택합니다. 오른쪽에 있는 ⓘ를 누르면 라이선스에 대한 자세한 설명을 참고할 수 있습니다.

 

03. 저장소를 만들었다면 화면에 나타난 HTTPS 주소를 사용해 언제든지 깃허브 저장소에 접속할 수도 있고 파일을 올릴 수도 있습니다. 즉 저장소 주소만 알고 있다면 어디에서든 지역 저장소를 백업하거나 다른 사람과 협업할 수 있습니다.

HTTP로 접속하는 주소는 다음과 같은 형태입니다.

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

 


지역 저장소를 원격 저장소에 연결하기

1. 지역 저장소 만들기

 먼저 깃허브의 원격 저장소에 연결할 새로운 지역 저장소를 만들겠습니다. 

 

01. localGit이라는 이름으로 새 디렉터리를 만들고 지역 저장소로 초기화하겠습니다. 그리고 디렉터리 안으로 들어가 문서 f1.txt를 만듭니다.

  git init localGit

  cd localGit

  vim f1.txt

 

02. f1.txt를 스테이지에 올린 후 커밋합니다. 커밋 메시지는 'add a'라고 하겠습니다. git log 명령으로 커밋이 잘 되었는지 확인하세요. 아직 터미널 창은 닫지 마세요.

  git add f1.txt

  git commit -m "add a"

  git log

2. 원격 저장소에 연결하기

 사용자 컴퓨터에 있는 지역 저장소를 깃허브에 있는 원격 저장소와 연결해 보겠습니다. 깃허브 저장소 화면에서 알려준 여러 가지 접속 방법 중 '커맨드 라인에서 기존 저장소를 푸시하기(...or push an existing repository from the command line)' 방법을 사용해서 지역 저장소에 있는 파일을 원격 저장소로 올려보겠습니다.

 

01. 지역 저장소와 원격 저장소를 연결하려면 깃허브의 저장소 주소를 알고 있어야 합니다. 웹 브라우저에서 아까 새로 만든 깃허브 저장소에 접속하세요. 화면 위쪽의 깃허브 주소 오른쪽에 있는 버튼을 누르면 주소가 복사됩니다.

 

02. 저장소 주소를 복사했다면 터미널 창에 다음과 같이 입력합니다.

  git remote add origin 복사한 주소 붙여넣기

 이 명령은 원격 저장소(remote)에 origin을 추가(add)하겠다고 깃에세 알려주는 것입니다. 여기에서 origin은 깃허브 저장소 주소(https://github.com/...)를 가리킵니다. 이렇게 지역 저장소를 특정 원격 저장소에 연결하는 것은 한 번만 하면 됩니다.

 

03. 오류 메시지 없이 프롬프트($)가 나타나면 제대로 실행된 것입니다.

 

04. 원격 저장소(remote)에 제대로 연결됐는지 확인해 볼까요? 다음과 같이 git remote 명령에 -v 옵션을 붙여서 입력해 보세요. remote에 origin이 연결되어 있고 origin이 가리키는 주소가 바로 옆에 표시될 것입니다. 

  git remote -v

 

지역 저장소와 원격 저장소 연결하기


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

 지역 저장소의 소스를 원격 저장소로 올리는 것을 '푸시(push)'라고 하고, 원격 저장소에서 지역 저장소로 내려받는 것을 '풀(pull)'이라고 합니다.

 

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

01. 터미널 창에서 다음과 같이 입력하세요. 지역 저장소의 브랜치를 origin, 즉 원격 저장소의 master 브랜치로 푸시하라는 명령입니다. 여기에서 '-u' 옵션은 지역 저장소의 브랜치를 원격 저장소의 master 브랜치에 연결하기 위한 것으로 처음에 한 번만 사용하면 됩니다.

  git push -u origin master

 

02. 푸시가 끝나면 프롬프트($)가 나타납니다. 이는 지역 저장소의 커밋이 원격 저장소로 올라갔다는 뜻입니다. 깃허브 저장소가 열려있는 웹 브라우저 창으로 돌아와 새로고침하면 f1.txt 파일이 올라와 있습니다.

 

03. 파일 목록 위의 '1 commit'을 눌러 보세요. 지역 저장소에서 커밋했던 내용이 똑같이 올라와 있을 것입니다.

04. 한 번이라도 지역 저장소와 원격 저장소를 연결해서 푸시했다면 그다음부터는 더 간단하게 푸시할 수 있습니다. 지역 저장소에서 또 다른 커밋을 만들고 다시 푸시해 보겠습니다.

  vim f1.txt

 

05. 다음 명령을 사용해 스테이징과 커밋을 한꺼번에 실행합니다. git commit 명령에서 -am은 스테이징 옵션(-a)과 메시지 옵션(-m)을 함께 쓴 것으로 최소한 한 번이라도 커밋한 파일(tracked 파일)이어야 사용할 수 있습니다.

  git commit -am "add b"

 

06. 원격 저장소로 푸시해 보겠습니다. 이미 앞에서 지역 저장소의 브랜치와 origin의 master 브랜치를 연결했기 떄문에 다시 파일을 푸시할 때는 git push라고만 입력하면 됩니다.

  git push

 

07. 웹 브라우저에서 깃허브 저장소 화면을 새로고침하면 방금 커밋한 'add b'라는 커밋 메시지가 보일 것입니다. 파일을 눌러보면 가장 최근에 수정한 파일 내용을 볼 수 있습니다.

 

2. 깃허브 사이트에서 직접 커밋하기

01. 깃허브의 저장소로 접속합니다. 여기에 새로운 파일을 추가해 보겠습니다. [Create new file]을 누르세요.

 

02. 파일 이름을 입력한 후 내용을 작성합니다. 여기에서는 파일 이름으로 f2.txt, 내용으로 숫자 '1, 2, 3'을 입력했습니다.

 

03. 파일 내용을 입력했다면 화면 아래로 이동해 보세요. 기본적인 커밋 메시지('Create f2.txt')가 입력되어 있습니다. 이 메시지를 그냥 사용하거나 원하는 내용으로 수정한 후 [Commit new file]을 누릅니다.

 

04. 원격 저장소에 새로운 커밋이 추가되었습니다.

3. 원격 저장소에서 파일 내려받기

 원격 저장소에 있는 소스 파일을 다른 사용자가 수정했거나 깃허브 사이트에서 직접 커밋하면 지역 저장소와 차이가 생깁니다. 이럴 때는 원격 저장소와 지역 저장소의 상태를 같게 만들기 위해 원격 저장소의 소스를 지역 저장소로 가져옵니다. 이것을 '풀(pull)한다'고 합니다.

 

01. 앞에서 만든 localGit 지역 저장소에는 원격 저장소에서 만든 f2.txt 파일이 없습니다.

  ls

 

02. 다음 명령은 origin(원격 저장소)의 내용을 master 브랜치로 가져온다는 뜻입니다. 

  git pull origin master

 

03. $가 표시되면 가져오기가 끝난 것입니다.

 

04. git log 명령으로 커밋 로그를 확인해 보면 깃허브 사이트에서 만들었던 'Create f2.txt'라는 커밋이 지역 저장소 커밋 로그에도 나타나는 것을 확인할 수 있습니다.

  git log

pull

4. 깃허브 저장소 화면 살펴보기

① 'rina214'는 깃허브 계정을, 'test'는 저장소 이름을 나타냅니다. 계정을 누르면 해당 계정에 대한 요약 정보 화면으로 이동하고, 저장소 이름을 누르면 저장소 파일 목록 화면으로 이동합니다.

② 이 저장소의 알림 내용을 받아봅니다.

③ 이 저장소를 즐겨찾기합니다. Star의 숫자가 높을수록 좋아하는 사용자가 많다는 뜻입니다.

④ 이 저장소를 복제합니다. 깃허브에서 오픈 소스 프로젝트에 참여하거나 직접 소스를 분석하면서 공부하려면 먼저 저장소를 복제해야 합니다. 이 방법은 06장에서 살펴봅니다.

⑤ 커밋 개수나 브랜치 개수 등 커밋과 관련된 정보들입니다.

⑥ 저장소에 있는 파일 정보입니다. 파일 이름과 최신 커밋 메시지, 최신 커밋 시간이 나타납니다.

 


깃허브에 SSH 원격 접속하기

 여기에서는 Secure Shell, 줄여서 SSH라는 방법을 통해서 깃허브에 접속하는 법을 알아보겠습니다.

1. SSH 원격 접속이란

 SSH는 보안이 강화된 안전한 방법으로 정보를 교환하는 방식입니다. SSH에서는 기본적으로 프라이빗 키(Private Key)와 퍼블릭 키(Public Key)를 한 쌍으로 묶어서 컴퓨터를 인증합니다. 퍼블릭 키는 말 그대로 외부로 공개되는 키이고, 프라이빗 키는 아무도 알 수 없게 사용자 컴퓨터에 저장되는 키입니다. 사용자 컴퓨터에서 SSH 키 생성기를 실행하면 프라이빗 키와 퍼블릭 키가 만들어집니다.

 

 일반적으로 깃허브의 원격 저장소에 파일을 올리는 등의 작업을 하기 위해서는 아이디와 비밀번호를 입력해서 깃허브에게 내가 해당 저장소를 만든 계정의 주인임을 인증해야 합니다. 웹 브라우저에서 깃허브 저장소에 접속할 때나 SourceTree 같은 프로그램을 사용해 깃허브 저장소에 접속할 때 이런 방법을 사용합니다. 

 

 이에 비해 SSH 원격 접속은 프라이빗 키와 퍼블릭 키를 사용해 현재 사용하고 있는 기기를 깃허브에 인증하는 방식입니다. 예를 들어 서버 환경에서 깃허브 저장소에 접속해야 한다면 서버 자체를 깃허브에 등록하고, 개인 노트북으로 접속한다면 노트북을 깃허브에 등록해 둡니다. 이렇게 하면 터미널 창을 이용할 수 있는 상태라면 언제 어디서든 깃허브에 접속할 수 있습니다. 또 터미널 창에서 깃허브를 사용하다 보면 아이디와 비밀번호를 요구하는 경우가 많은데, SSH 접속 방법을 사용하면 자동 로그인 기능을 통해 이러한 번거로움을 줄일 수 있습니다.

 

1. SSH 키 생성하기

01. 터미널 창에서 ssh-keygen이라고 입력합니다. 화면에 SSH 키가 저장되는 디렉터리 경로가 표시되면서 파일 이름을 입력하라고 합니다. SSH 키가 저장되는 디렉터리는 홈 디렉터리 안에 있는 .ssh 디렉터리임을 확인할 수 있네요. 파일 이름은 입력하지 말고 Enter키를 누릅니다.

 

02. 두 번 더 Enter키를 누르면 화면에 SSH를 통해서 다른 컴퓨터에 접속할 수 있는 비밀번호가 생성됩니다. 화면에는 몇 가지 파일 경로가 표시되는데 그중에 id_rsa 파일이 프라이빗 키이고, id_rsa.pub 파일이 퍼블릭 키입니다.

 

03. .ssh 디렉터리로 이동해서 그 안의 내용을 살펴보면 프라이빗 키 id_rsa 파일과 퍼블릭 키 id_rsa.pub 파일이 만들어진 것을 확인할 수 있습니다.

  cd ~/.ssh

  ls -la

2. 깃허브에 퍼블릭 키 전송하기

 앞에서 만든 키를 사용해 보기 전에 SSH 방식으로 깃허브 저장소에 접속하는 과정을 간단히 살펴보겠습니다. SSH 방식으로 접근하려면 먼저 사용자 컴퓨터에 만들어져 있는 퍼블릭 키를 깃허브 서버로 전송한 다음 저장합니다. 사용자 컴퓨터에서 깃허브 저장소에 접속하면 사용자 컴퓨터에 있는 프라이빗 키와 깃허브 서버에 있는 퍼블릭 키를 비교합니다. 퍼블릭 키와 프라이빗 키는 한 쌍이므로 두 개의 키가 서로 맞으면 사용자 컴퓨터와 깃허브 저장소가 연결됩니다.

 

01. SSH 키를 만들면 먼저 퍼블릭 키를 깃허브에 올려야 합니다. 퍼블릭 키가 담겨 있는 id_rsa.pub 파일의 내용을 확인해 보겠습니다. .ssh 디렉터리로 이동한 다음 cat 명령을 사용해서 파일을 열어 보세요.

  cd ~/.ssh

  cat id_rsa.pub

 

02. 이 내용을 깃허브 서버에 올려야 합니다. 앞부분에 있는 ssh-rsa부터 문자열 끝까지 선택한 후 마우스 오른쪽 버튼을 누르고 [Copy]를 선택합니다.

 

03. 웹 브라우저에서 깃허브에 접속한 후 로그인합니다. 그리고 화면 오른쪽 위에 있는 사용자 아이콘을 누른 후 [Settings]를 선택하세요.

 

04. 여러 설정 메뉴 중 [SSH and GPG keys]를 누른 후 퍼블릭 키를 추가하기 위해 화면 오른쪽에 나타난 [New SSH key]를 누릅니다.

 

05. SSH 중 퍼블릭 키는 여러 개를 등록할 수 있기 때문에 Title 항목에 현재 등록하는 SSH 퍼블릭 키를 쉽게 알아볼 수 있도록 제목을 붙입니다. 그리고 Key 항목에 앞에서 복사한 퍼블릭 키 값을 붙여 넣습니다.

 

06. Key 항목에 ssh-rsa로 시작하는 키 값을 입력했다면 [Add SSH key] 버튼을 눌러서 SSH 키를 추가합니다.

 

07. 퍼블릭 키를 추가할 때 비밀번호를 한번 확인합니다. 깃허브 비밀번호를 입력한 후 [Confirm password]를 누릅니다.

 

08. 만들었던 SSH 키 중에서 퍼블릭 키를 깃허브 서버에 올렸습니다. 이제 SSH 키를 만들었던 컴퓨터는 깃허브 저장소의 SSH 주소만 알고 있으면 로그인 정보를 입력하지 않고도 즉시 그 저장소에 접속할 수 있습니다.

 

3. SSH 주소로 원격 저장소 연결하기

01. 깃허브 사이트에서 화면 오른쪽 위에 있는 [+]를 누른 후 [New repository]를 선택합니다. 저장소 이름을 입력한 후 [Create repository]를 눌러서 저장소를 만듭니다.

 

02. 저장소가 만들어지면 HTTPS 주소가 나타납니다. 우리는 SSH 방식으로 접근할 것이므로 [SSH]를 눌러서 SSH 주소를 표시합니다. 그리고 복사 아이콘을 눌러서 SSH 주소를 복사합니다.

 

03. 이제 SSH 방식으로 접속해 보겠습니다. 홈 디렉터리에 connect-ssh 저장소를 만든 후 해당 디렉터리로 이동합니다.

  cd ~

  git init connect-ssh

  cd connect-ssh

 

04. SSH 주소를 사용해 원격 저장소에 연결하는 방법는 HTTPS 주소를 사용할 때와 같습니다. git remote add origin 명령 뒤에 복사한 주소를 붙여 넣습니다.

  git remote add origin 복사한 주소 붙여넣기

 

05. 오류 메시지 없지 프롬프트($)가 표시되면 정상적으로 연결된 것입니다. git remote 명령 뒤에 -v 옵션을 붙여서 어떤 원격 저장소가 연결되었는지 확인할 수 있습니다. 이제부터는 원격 저장소를 사용하는 동안 로그인 정보를 요구하지 않기 때문에 좀 더 편하게 푸시나 풀을 할 수 있습니다.

'GIT' 카테고리의 다른 글

05. GitHub로 협업하기  (0) 2020.02.15
03. GIT과 Branch  (0) 2020.01.28
02. GIT으로 버전 관리하기  (0) 2020.01.23
01. GIT 시작하기  (0) 2020.01.15