프로그래밍/깃&깃허브

[깃&깃허브] 04. 깃허브로 백업하기 (p.131~165)

aSpring 2021. 3. 16. 20:56
728x90
728x90

2021/01/16 - [분류 전체보기] - Do it! 공부단

2021/02/19 - [프로그래밍/깃&깃허브] - [깃&깃허브] 01. 깃 시작하기 (~p.37)

2021/02/20 - [프로그래밍/깃&깃허브] - [깃&깃허브] 02. 깃으로 버전 관리하기 (p.38~83)

2021/02/21 - [프로그래밍/깃&깃허브] - [깃&깃허브] 03. 깃과 브랜치 (p.84~130)

 

 

와~! 드디어 깃허브 입니다!!! ><


 

04 깃허브로 백업하기

지금까지 살펴본 버전들 -> 모두 내 컴퓨터의 '지역 저장소'에 저장
이제부터는 내 컴퓨터에 있는 버전을 '인터넷상'에 저장할 수 있는 서비스를 이용할 것
-> 가장 많이 이용하는 '깃허브' 서비스 사용법에 대해 살펴볼 것

깃허브에 버전을 올리면 무엇이 좋은가?
- 지역 저장소의 버전을 백업할 수 있다
- 온라인에 올린 버전들을 공유해 다른 사람과 협업할 수 있다

이번 장에서는 무엇을 배울 것인가?

1. 깃허브에 저장소를 만드는 방법
2. 지역 저장소와 연결하는 방법
3. 지역 저장소의 버전을 깃허브에 올리는 방법

04-1 원격 저장소와 깃허브

지금까지 내 컴퓨터에서 작업 -> 내 컴퓨터 안에 커밋 : '지역 저장소(local repository)'
만약, 실수로 지역 저장소를 삭제한다면? 이때까지 작업했던 내용이 모두 사라지게 됨
이것이 아주 중요한 프로젝트라면?
-> 작업 내용을 지역 저장소에만 저장하는 것은 안전 X
-> 작업하는 컴퓨터가 아닌 다른 곳에 저장 공간을 마련해야 함

원격 저장소(remote repository)란

- 지역 저장소가 아닌 컴퓨터나 서버에 만든 저장소를 말함

- 깃에서는 지역 저장소 - 원격 저장소를 연결 -> 버전 관리하는 파일들을 쉽게 백업 가능

- 역할 : 백업, 협업

- 깃허브 : 깃과 관련해 가장 많이 사용하는 서비스

 

깃허브에 직접 원격 저장소를 만들고 지역 저장소의 파일을 원격 저장소로 백업하는 방법을 알아볼 것

 

깃허브로 할 수 있는 일들

- 깃허브는 사용자를 위해 저장소를 제공하는데 대부분의 경우 무료 서비스만으로도 용량 제한 없이 사용 가능

- 유명한 이유 : 개발자들이 많이 사용하고 주목하는 여러 오픈소스들이 올라와 있기 때문

-> 단순히 하나의 서비스에 국한된 것이 아니라 개발 문화 전체에서 차지하는 영향력이 아주 큰 서비스

-> 개발자라면 누구나 깃허브를 사용하고 있다고 할 수 있다

-> 그렇다면 깃허브로 무엇을 할 수 있는가?

 

1) 원격 저장소에서 깃을 사용할 수 있다

- 따로 깃을 설치하지 않고도 온라인 상에서 깃의 버전 관리 기능 사용 가능

-> 지역 저장소를 만들지 않아도 깃허브에 원격 저장소를 만들어 사용할 수도 잇고, 지역 저장소가 있다면 원격 저장소와 연결해서 사용할 수도 있음

 

2) 지역 저장소를 백업할 수 있다

- 깃허브에 원격 저장소 만들고 내 컴퓨터에 지역 저장소를 연결 -> 동기화 : 지역 저장소를 인터넷에 백업할 수 있음

-> 원격 저장소에 손쉽게 커밋할 수 있음

 

3) 협업 프로젝트에 사용할 수 있다

- 인터넷만 가능하면 누구나 접근 할 수 있다

- 깃과 깃허브에서 여러 가지 협업 도구를 제공한다

-> 여러 명의 팀원이 하나의 프로젝트를 진행하기 쉽다

 

4) 자신의 개발 이력을 남길 수 있다

- 깃허브에서 소스 수정, 오픈 소스에 참여해서 하는 일들은 사용자 초기 화면에 날짜별로 모두 기록이 남는다

-> 빽빽하게 기록된 것을 보면 스스로 성실하게 개발했다는 뿌듯함을 준다

-> 최근에는 개발자를 뽑을 때 깃허브 계정을 요구하는 곳들이 있는데, 지원자가 어떤 주제에 관심이 많은지, 어떤 것들을 개발했는지, 무엇을 개발 중인지 한눈에 확인 가능 -> 개발자가 자신의 개발 이력을 관리하기 좋은 플랫폼

 

5) 다른 사람의 소스를 살펴볼 수 있고, 오픈 소스에 참여할 수도 있다

- 개발자로서 실력을 높이는 방법 중 하나 : 다른 사람의 소스를 읽어보고 분석하면서 나름대로 수정하고, 작성해 보는 것

- 깃을 비롯해 웹 개발, 인공지능, 데이터 과학 등 개발의 전 분야에 걸쳐 다양한 오픈 소스들이 등록되어 있다

-> 이런 오픈 소스를 살펴보고 참여할 수 있는 것도 깃허브의 커다란 매력이다

 

[한 걸음 더!] 깃허브 사이트 둘러보기

[Explorer] > [Explorer GitHub] : 깃허브에 등록된 여러 저장소들을 한눈에 살펴볼 수 있음
깃허브 저장소 : 프로그램 소스뿐만 아니라 파일을 올려놓기도 하고 여러 링크를 모아 정리해 두기도 함
찾고 있는 소스가 있다면 검색 : 검색어가 자동 완성되는게 그 중 'All GitHub'라는 내용이 있는 항목 눌러보기 -> 관련된 여러 저장소들이 나타나고 살펴보고 싶은 저장소를 누르면 해당 저장소로 이동함

04-2 깃허브 시작하기

깃허브에 가입하고, 저장소를 만드는 방법 알아보기
- 저장소는 필요할 때마다 얼마든지 만들 수 있고, 사용하지 않는 저장소는 삭제할 수 있음

깃허브에 가입하기

깃허브에 원격 저장소 만들

New repository

1. Repository name : 저장소 이름
- 영문, 숫자, 언더바( _ ), 붙임표( - ) 등 사용 가능
- 공백이 포함되면 깃허브에서 공백을 자동으로 붙임표(-)로 바꿈

2. Description : 저장소에 대한 간단한 설명 입력(옵션)

3. Public / Private : 저장소 공개/비공개 선택
- 공개 저장소 : 주소만 알고 있으면 누구나 볼 수 있음

4. Initialize this repository with a README : 저장소에 대한 소개, 설명을 작성하는 README 파일을 자동으로 만들려면 체크

5. Add .gitignore : 선택한 언어와 관련된 것들을 .gitignore 파일에 지정
-> 예) C++ 선택 시, 이 언어에서 사용하는 컴파일된 라이브러리나 실행 파일을 깃에서 무시하도록 자동으로 .gitignore 파일 만들어 줌

6. Add a License : 오픈 소스 프로젝트를 위한 저장소를 만들 경우 해당 오픈 소스의 라이선스 선택

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

※ HTTPS 프로토콜과 SSH
- 깃허브 저장소에 접속할 때 이용하는 방법
- 웹 브라우저에서 접속할 때는 HTTPS를 이용

HTTPS 주소 형태
https://github.com/아이디/저장소명

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

지역 저장소에서 한 작업 -> 원격 저장소로 올리기
원격 저장소에 있는 파일 -> 지역 저장소로 내려받기

전에!! 먼저 지역 저장소 - 원격 저장소 연결

지역 저장소 만들기

loc-git 이라는 새 디렉터리를 만들고 지역 저장소로 초기화 -> 안에 f1.txt 만들기 -> 스테이징&커밋(add a)

 

원격 저장소에 연결하기

1번 !! 깃허브 저장소 화면에서 알려준 여러 가지 접속 방법 중 '커맨드 라인에서 기존 저장소를 푸시하기' 방법 사용

1. 웹 브라우저에서 깃허브 저장소에 접속 -> 깃허브 저장소 주소 복사
2. 터미널 창에 $ git remote add origin 복사한 주소 붙여넣기
-> 원격 저장소(remote)에 origin을 추가(add) 하겠다고 깃에게 알려주는 명령
-> origin : 깃허브 저장소 주소를 가리킴(깃의 기본 브랜치는 master, 원격 저장소는 origin이라고 함)
-> 지역 저장소가 특정 원격 저장소에 연결됨(이 작업은 한 번만 하면 됨)
3. 오류 메시지 없이 프롬프트($)가 나타나면 제대로 실행이 된 것
4. 원격 저장소(remote)에 제대로 연결됐는지 확인 : git remote -v

- remote에 origin이 연결되어 있고 origin이 가리키는 주소가 바로 옆에 표시됨

 

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

- 푸시(push) : 지역 저장소의 소스를 원격 저장소로 올리는 것
- 풀(pull) : 원격 저장소에서 지역 저장소로 내려받는 것

 

원격 저장소에 파일 올리기 - git push

지역 저장소의 커밋을 원격 저장소로 보내기(푸시)

1. 터미널 창에 다음과 같이 입력하기

git push -u origin master

지역 저장소의 브랜치를 origin으로 푸시하라는 명령(즉, 원격 저장소의 master 브랜치로)

-u 옵션 : 지역 저장소의 브랜치를 원격 저장소의 master 브랜치에 연결하기 위한 것(처음 한 번만 사용)

 

2. 푸시가 끝났으면 깃허브 저장소가 열려있는 웹 브라우저 창에서 [F5]로 새로고침

- 지역 저장소에 있던 f1.txt 파일이 원격 저장소로 올라와 있음

 

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

 

 

 

4. 한 번이라도 지역 저장소와 원격 저장소를 연결해서 푸시했다면 그다음부터는 더 간단하게 푸시 가능

- 지역 저장소에서 또 다른 커밋을 만들고 다시 푸시해보기

- vim에서 f1.txt 열기 -> 내용 추가 -> 저장

 

 

5. 스테이징 & 커밋 한꺼번에 실행(커밋 메시지 : add b)

- 한 번이라도 커밋한 파일 즉, tracked 파일이므로 가능함

- 지역 저장소에 만들어진 새로운 커밋 -> 원격 저장소로 푸시 : git push

-> 이미 지역 저장소의 브랜치와 origin의 master 브랜치를 연결했기 때문에 다시 파일을 푸시할 때는 git push만 입력

 

6. 웹 브라우저의 깃허브 저장소 화면 새로고침 -> 파일 목록에서 파일 이름 오른쪽에 최신 커밋 메시지가 나타남

- 'add b'라는 커밋 메시지가 보일 것

 

- f1.txt 파일 눌러보면 가장 최근에 수정한 파일의 내용이 들어있음

 

 

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

지역 저장소가 있는 컴퓨터를 사용할 수 없을때 편리

1. 깃허브 저장소에 접속 -> 새로운 파일 추가 [Create new file]

2. 파일 이름, 내용 적고, 아래로 내려보면 Create f2.txt라고 기본적인 커밋 메시지가 입력되어 있고, 이를 수정하거나 그대로 사용 -> [Commit new file]

 

원격 저장소에서 파일 내려받기 - git pull

원격 저장소에 있는 소스 파일을 다른 사용사가 수정했거나, 깃허브 사이트에서 직접 커밋한 경우
-> 지역 저장소와 차이 생김 -> 원격 저장소와 지역 저장소의 상태를 같에 만들기 위해 원격 저장소의 소스를 지역 저장소로 가져옴 즉, 풀(pull) 한다

1. loc-git 지역 저장소에는 앞에서 만든 f2.txt가 없음

-> git pull origin master : origin(원격 저장소)의 내용을 master 브랜치로 가져온다

-> git pull만 입력해도 됨 : 기본 원격 저장소가 origin이고 지역 저장소의 기본 브랜치가 master이기 때문에

 

 

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

① 깃허브 계정/저장소 이름

- 계정 클릭 : 해당 계정에 대한 요약 정보 화면으로 이동

- 저장소 이름 클릭 : 저장소 파일 목록 화면으로 이동

② 이 저장소의 알림 내용을 받아 봄

③ 이 저장소 즐겨찾기 -> 숫자가 높을수록 좋아하는 사용자가 많다는 뜻

④ 이 저장소 복제 -> 깃허브에서 오픈 소스 프로젝트에 참여하거나 직접 소스를 분석하면서 공부하려면 먼저 저장소를 복제해야 함

⑤ 커밋과 관련된 정보 : 커밋 개수나 브랜치 개수 등

⑥ 저장소에 있는 파일 정보 : 파일 이름, 최신 커밋 메시지, 최신 커밋 시간

 

~를 눈여겨보면 해당 저장소의 소스를 참고할지 결정하는 데 도움이 될 것

ex) git 오픈소스 저장소 https://github.com/git/git -> 많은 사용자들이 즐겨찾기를 눌렀거나 복제 -> 그만큼 인기 있는 오픈 소스라는 뜻

 

git/git

Git Source Code Mirror - This is a publish-only repository and all pull requests are ignored. Please follow Documentation/SubmittingPatches procedure for any of your improvements. - git/git

github.com

 

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

Secure Shell, SSH

SSH 원격 접속이란

SSH : Secure Shell

- 보안이 강화된 안전한 방법으로 정보를 교환하는 방식

- 기본적으로 Private Key, Public Key를 한 쌍으로 묶어서 컴퓨터를 인증

-> Private Key : 아무도 알 수 없게 사용자 컴퓨터에 저장되는 키

-> Public Key : 외부에 공개되는 키

- 사용자 컴퓨터에서 SSH 키 생성기 실행 시 Private Key, Public Key가 만들어짐 -> 이것을 사용해 현재 사용하고 있는 기기를 깃허브에 인증 -> 자동 로그인 기능

 

SSH 키 생성하기

1. 터미널 창에서 홈 디렉터리로 이동 -> sign-keygen 입력

-> 화면에 SSH 키가 저장되는 디렉터리 경로가 표시되면서 파일 이름을 입력하라고 하는데, 입력하지 말고 [Enter]

(SSH 키가 저장되는 디렉터리는 홈 디렉터리 안에 있는 .ssh 디렉터리임을 확인할 수 있음)

 

2. 두 번 더 [Enter] -> 화면에 SSH를 통해 다른 컴퓨터에 접속할 수 있는 비밀번호가 생성됨

-> 복잡해서 외부에서 쉽게 공격할 수 없음

-> id_rsa 파일 : Private Key

-> id_rsa.pub 파일 : Public Key

 

3. .ssh 디렉터리에 저장되었는지 확인해보기

- .ssh 디렉터리로 이동 -> 내용 살펴보기

 

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

SSH 방식으로 깃허브 저장소에 접속하는 과정

- 먼저 사용자 컴퓨터에 만들어져 있는 퍼블릭 키를 깃허브 서버로 전송, 저장

-> 사용자 컴퓨터에서 깃허브 저장소에 접속하면 사용자 컴퓨터에 있는 프라이빗 키와 깃허브 서버에 있는 퍼블릭 키 비교 -> 두 키는 한 쌍이므로 서로 맞으면 사용자 컴퓨터와 깃허브 저장소가 연결됨

 

직접 SSH 방식으로 깃허브에 접속해보기

1. 퍼블릭 키를 깃허브에 올리기

- id_rsa.pub 파일 내용 확인해보기 : cat id_rsa.pub

 

2. 나오는 문자열을 깃허브 서버에 올려야 함 : Copy

 

3. 웹 브라우저에서 깃허브에 접속 -> 로그인 -> 오른쪽 위에 있는 사용자 아이콘 클릭 > Settings > SSH and GPG keys > New SSH Key > Title 항목에 현재 등록하는 SSH 퍼블릭 키를 쉽게 알아볼 수 있도록 제목 붙임(퍼블릭 키는 여러 개 등록 가능하므로) > Key 항목에 복사한 퍼블릭 키 값 붙여넣기 > Add SSH key

※ 붙여 넣을 때, 끝에 빈 칸이나 빈 줄이 추가되지 않도록 주의

 

4. 이제 SSH 키를 만들었던 컴퓨터는 깃허브 저장소의 SSH 주소만 알고 있으면 로그인 정보를 입력하지 않고도 즉시 그 저장소에 접속할 수 있음

※ 깃허브에 등록해 놓은 SSH 키를 삭제하려면 SSH 키 목록에서 키 오른쪽에 있는 [Delete] 누르기

 

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

SSH 원격 접속 준비 끝 -> SSH 주소를 사용해 지역 저장소 - 원격 저장소 연결

1. 깃허브 사이트 오른쪽 위 [+] > New repository > 저장소 이름 입력 후 Create repository > HTTPS 주소가 나타나면 SSH를 클릭해 HTTPS 주소가 아닌 SSH 주소가 표시되도록 함 > 복사

 

3. 홈 디렉터리에 connect-ssh 저장소를 만든 후 이동

 

4. git remote add origin 복사한 주소 붙여넣기 > git remote -v

- 이제부터 원격 저장소를 사용하는 동안 로그인 정보를 요구하지 않기 때문에 좀 더 편하게 푸시나 풀 가능

04장에서 꼭 기억해야 할 명령

git remote add origin 저장소 주소 원격 저장소에 연결
git remote -v 원격 저장소에 연결됐는지 확인
git push -u origin master 지역 저장소의 커밋을 맨 처음 원격 저장소로 올림
git push
git push origin master
(한번 올리기 한 후) 지역 저장소의 커밋을 원격 저장소로 올림
git pull
git pull origin mastger
원격 저장소의 커밋을 지역 저장소로 가져옴
ssh-keygen SSH 키를 만듦

 

728x90
728x90