04-1 원격 저장소와 깃허브
- 지금까지 우리는 자신의 컴퓨터에서 작업한 뒤 그 컴퓨터 안에 커밋을 저장했다.
- 이 저장소를 지역 저장소(local repository)라고 한다.
- 이렇게 작업 내용을 지역 저장소에만 저장하는 것은 안전하지 않기 때문에 작업하는 컴퓨터가 아닌 다른 곳에 저장 공간을 마련해야 한다.
1. 원격 저장소란(remote repository)
깃에서는 지역 저장소와 원격 저장소를 연결해서 버전 관리하는 파일들을
쉽게 백업할 수 있다. 원격 저장소는 지역 저장소가 아닌 컴퓨터나 서버에
만든 저장소를 말한다.
원격 저장소는 지역 저장소와 연결되어 있으면서 '백업'과 '협업'이라는
중요한 역할을 한다. 특히 큰 규모의 프로젝트를 진행한다면 다른 사람과
협업해야 하는 경우가 많은데, 이때 원격 저장소의 역할은 더욱 중요해진다.
원격 저장소를 직접 구축할 수도 있지만 만들고 유지하는 것이 쉽지 않다.
그래서 인터넷에서 원격 저장소를 제공하는 서비스를 주로 사용한다.
그 중에서 가장 많이 사용하는 서비스가 바로 깃허브이다.
2. 깃허브로 할 수 있는 일들
1. 원격 저장소에서 깃을 사용
깃허브는 깃 사용을 위한 원격 저장소를 제공하는 서비스이기 때문에 따로
깃을 설치하지 않아도 온라인상에서 깃의 버전 관리 기능을 사용할 수 있다.
2. 지역 저장소를 백업하기
깃허브에 원격 저장소를 만들고 사용자 컴퓨터의 지역 저장소를 연결한 후
동기화하면 지역 저장소를 인터넷상에 백업할 수 있다.
3. 협업 프로젝트에 사용하기
팀 프로젝트를 진행할 때도 이젠 깃허브가 기본 저장소가 되고 있다.
원격 저장소이므로 인터넷만 가능하면 누구나 접근, 깃과 깃허브에서 여러가지
협업 도구를 제공하기 때문에 깃허브를 사용하면 여러 명의 팀원이 하나의
프로젝트를 진행하기 쉽다.
4. 자신의 개발 이력을 남기기
깃허브에서 소스를 수정하고 오픈 소스에 참여해서 하는 일들은 사용자 초기
화면에 날짜별로 모두 기록에 남는데 최근에는 개발자를 뽑을 때 깃허브 계정을
요구하는 곳들도 있다.
5. 다른 사람의 소스를 살펴볼 수 있고, 오픈 소스에도 참여하기
깃허브에는 전세계 개발자들이 공개해 놓은 소스들이 많다. 얼마든지 이 소스를
내 저장소로 가져와서 분석해 볼 수 있다. 이런 오픈 소스를 살펴보고 참여할 수
있는 것도 깃허브의 커다란 매력이다.
04-2 깃허브 시작
깃허브에 원격 저장소를 만들기 위해서는 먼저 깃허브에 가입
1. 깃허브에 가입하기
1. www.github.com에 접속 후 [Sign up] 클릭
깃허브 계정이 있다면 [Sign in] 로그인
2. 가입 항목 중 필수 입력 사항 모두 입력
화면 아래쪽의 'Verify account'에 있는 문제 풀고
[Create an account] 클릭
3. 유/무료 계정 선택 'Free' [Continue] 클릭
무료계정의 경우 3명 까지 협업 가능
4. 설문 답을 한 후 [Submit] 또는 [skip this step]
5. 가입 시 입력한 메일 주소로 인증메일 확인 [Verify email address]
2. 깃허브에 원격 저장소 만들기
이제부터 원격 저장소를 어떻게 만드는지 살펴보자.
1. 깃허브에 로그인한 후 화면 상단 오른쪽 [+]를 누르고
[New repository]를 선택
2. 저장소 이름을 비롯해서 필요한 항목을 기입[Create repository]
3. 저장소를 만들었다면 화면에 나타난 HTTPS 주소를 사용해 언제든지
깃허브 저장소에 접속, 파일을 올릴 수도 있다. 즉 저장소 주소만 알고
있다면 어디에서든 지역 저장소를 백업하거나 다른 사람과 협업 가능하다.
HTTPS로 접속하는 주소는 다음고 같은 형태이다.
https://github.com/아이디/저장소이름
예) HTTPS|SSH https://github.com/narospace/test-1.git
04-3 지역저장소를 원격 저장소에 연결
원격 저장소를 만들었으니 이제 지역 저장소에서 한 작업을 원격 저장소로
올리거나 내려받아 작업해 보자. 이를 위해서는 먼저 지역 저장소와
원격 저장소를 연결해야...
1. 지역 저장소 만들기
먼저 깃허브의 원격 저장소에 연결할 새로운 지역 저장소를 만들자.
미리 만들어 둔 지역 저장소가 있다면 터미널 창에서 해당 지역 저장소를
열어 놓고 다음 내용인 '원격 저장소에 연결하기' 참조
1. git init loc-git
cd loc-git
vi f1.txt <-- 'a' 입력 저장
2. git add f1.txt
git commit -m 'add a'
git log
2. 원격 저장소에 연결하기
깃허브 저장소 (웹)화면에서 알려준 여러가지 접속 방법 중
'커맨트 라인에서 기존 저장소를 푸시하기'
…or push an existing repository from the command line
git remote add origin https://github.com/narospace/test-1.git
git branch -M main
git push -u origin main
방법 사용
1. 지역 저장소와 원격 저장소를 연결하려면 깃허브의 저장소 주소를
알아야 함. 웹에서 깃허브 저장소 접속 후 화면 상단 오른쪽
HTTPS | SSH ....................................ㅁㅁ 아이콘
클릭하면 주소가 복사
2. 저장소 주소를 복사했다면 터미널 창에 다음과 같이 입력
$ git remote add origin 복사한 주소 붙여넣기
이 명령은 원격 저장소(remote)에 origin을 추가(add)하겠다고 깃
에게 알려준다. 여기에서 origin은 깃허브 저장소 주소(https://github.com/...)
를 가리킨다. 깃허브 저장소 주소를 그대로 쓰면 너무 길기 때문에 origin
이라는 단어로 줄여서 remote에 추가하는 것이다.
이렇게 지역 저장소를 특정 원격 저장소에 연결하는 것은 한 번만 하면 된다.
깃에서 기본 브랜치를 master라고 하는 것처럼 기본 원격 저장소에는 origin
이라는 이름을 사용한다.
3. 오류 메시지 없이 프롬프트($)가 나타나면 제대로 실행된 것
4. git remote -v
제대로 연결됐는지 확인 -v 옵션 사용
origin https://github.com/narospace/test-1.git (fetch)
origin https://github.com/narospace/test-1.git (push)
remote에 origin이 연결되어 있고 origin이 가리키는 주소가 표시
04-4 원격 저장소에 올리고 내려받기
지역 저장소와 원격 저장소를 연결했으니 이제부터 저장소의 소스를
원격 저장소에 올릴 수도 내려받을 수도 있다. 이 때 지역 저장소의
소스를 원격 저장소로 올리는 것을 '푸시(push)'라고 하고,
원격 저장소에서 지역 저장소로 내려받는 것을 '풀(pull)'이라고 한다.
원격 저장소에 파일 올리기(git push)
1. git push -u origin master
지역 저장소의 브랜치를 origin, 즉 원격 저장소의 master
브랜치로 푸시하라는 명령이다. 여기에서 '-u' 옵션은 지역
저장소의 브랜치를 원격 저장소의 master브랜치에 연결하기 위한 것으로
처음에 한 번만 사용된다.
참고| 에러
remote: Permission to narospace/test-1.git denied to bitcamp-pool.
fatal: unable to access 'https://github.com/narospace/test-1.git/':
The requested URL returned error: 403
403오류는 해당 레포지토리 주소에 접근 권한이 없을 경우 발생
git remote -v
위 명령어를 통해 현재 remote 리스트들을 확인
origin https://github.com/narospace/test-1.git (fetch)
origin https://github.com/narospace/test-1.git (push)
해결하기위해서는 재인증이 필요
인증을 위해 Remote URL을 변경해주어야 한다.
$ git remote set-url origin https://call1212@github.com/narospace/test-1.git
$ git remote -v
origin https://call1212@github.com/narospace/test-1.git (fetch)
origin https://call1212@github.com/narospace/test-1.git (push)
$ git push -u origin master
인증을 위한 로그인 창 팝업
인증 확인
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 200 bytes | 200.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/narospace/test-1.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
2. 푸시가 끝났다는 것은 지역 저장소의 커밋이 원격 저장소로 올라갔다는 뜻
깃허브 저장소가 열려있는 웹 브라우저 창에서 F5 새로고침 후 확인
3. 파일 목록 위의 '1 commit' 지역 저장소 커밋 내용과 같음
4. 한 번이라도 지역 저장소와 원격 저장소를 연결해서 푸시했다면 그 다음부터는
더 간단하게 푸시할 수 있다. 지역 저장소에서 또 다른 커밋을 만들고 다시 푸시
5. vi f1.txt
6. 원래 내용 다음에 'b'를 추가
7. git commit -am 'add b'
8. git push
이미 앞에서 지역 저장소의 브랜치와 origin의 master브랜치를 연결했기 때문에
다시 파일을 푸시할 때는 git push라고만 입력
9. 웹 브라우저 깃허브 저장소 확인
10.git log
commit fbeb28b598392c0bcd67dac56b...... (HEAD -> master, origin/master)
Author: jyk <call1212@nate.com>
Date: Fri Nov 5 16:55:36 2021 +0900
add b
깃허브 사이트에서 직접 커밋하기
보통 지역 저장소와 원격 저장소를 연결한 후 지역 저장소의 커밋을 원격 저장소에 푸시
하는 방법을 많이 사용하지만, 깃허브 사이트에서 직접 커밋할 수도 있다.
지역 저장소가 있는 컴퓨터를 사용할 수 없을 때...
1. 깃허브의 저장소 접속 [Add file] >[Create new file]
2. 파일이름 f2.txt 내용 숫자 '1, 2, 3' 입력
3. 화면 아래 Commit new file 항목을 원하는 내용으로 수정 후
[Commit new file]
4. 원격 저장소에 새로운 커밋이 추가
원격 저장소에서 파일 내려받기(git pull)
원격 저장소에 있는 소스파일을 다른 사용자가 수정했거나 깃허브 사이트에서 직접 커밋
하면 지역 저장소와 차이 발생, 이럴 때는 원격 저장소와 지역 저장소의 상태를 동기화
하기 위해 원격 저장소의 소스를 지역 저장소로 가져와야 한다. 이것을 '풀(pull)한다'
1. 앞에서 loc-git 지역 저장소를 원격 저장소에 연결한 후 푸시했다. 그리고 깃허브
사이트에서 바로 f2.txt라는 파일을 새로 만듦. 그러므로 log-git 지역 저장소에는
아직 f2.txt 파일이 없음.
ls -al
2. git pull origin master
origin(원격 저장소)의 내용을 master 브랜치로 가져온다는 뜻
3. ls -al
4. git log
깃허브 사이트에서 만들었던 'Create f2.txt'라는 커밋이 지역 저장소
커밋 로그에도 나타나는 것을 확인
깃허브 저장소 화면 살펴보기
1. narospace/test-1 Public
깃허브 계정/저장소이름
2. Unwatch : 이 저장소의 알림 내용을 받기
3. Star : 이 저장소를 즐겨찾기, 숫자가 높을수록 사용자가 많다는 뜻
4. Fork : 이 저장소를 복제, 깃허브에서 오픈 소스 프로젝트에 참여하거나 직접 소스를
분석하면서 공부하려면 먼저 저장소를 복제해야 한다
5. minutes ago ? commits : 커밋 개수나 브랜치 개수 등 커밋과 관련된 정보
6. 파일들 : 저장소에 있는 파일 정보, 파일 이름과 최신 커밋 메시지, 최신 커밋 시간 표시
깃허브에서 다른 저장소의 소스를 살펴볼 때 2,3,4 등의 개수를 눈여겨보면 해당 소스를 참고
할지 결정하는 데 도움(https://github.com/git/git)
04-5 깃허브에 SSH 원격 접속
04-5 깃허브에 SSH 원격 접속하기
여기에서는 Secure Shell, 줄여서 SSH라는 방법을 통해서 깃허브에 접속하는 법
SSH 원격 접속이란
보안이 강화된 안전한 방법으로 정보를 교환하는 방식
SSH에서는 기본적으로 프라이빗 키(Private Key)와 퍼블릭 키(Public Key)를
한 쌍으로 묶어서 컴퓨터를 인증한다. 퍼블릭 키는 말 그대로 외부로 공개되는
키이고, 프라이빗 키는 아무도 알 수 없게 사용자 컴퓨터에 저장되는 키이다.
사용자 컴퓨터에서 SSH 키 생성기를 실행하면 프라이빗 키와 퍼블릭 키가 만들어진다.
일반적으로 깃허브의 원격 저장소에 파일을 올리는 등의 작업을 하기 위해서는
아이디와 비밀번호를 입력해서 깃허브에게 내가 해당 저장소를 만든 계정의 주인임을
인증해야 한다. 이에 비해 SSH 원격 접속은 프라이빗 키와 퍼블릭 키를 사용해
현재 사용하고 있는 기기를 깃허브에 인증하는 방식이다.
예를 들어 서버환경에서 깃허브 저장소에 접속해야 한다면 서버 자체를 깃허브에 등록
하고, 개인 노트북으로 접속한다면 노트북을 깃허브에 등록해 둔다.
이렇게 하면 터미널 창을 이용할 수 있는 상태라면 언제 어디서든 깃허브에 접속할 수 있다.
또 터미널 창에서 깃허브를 사용하다 보면 아이디와 비밀번호를 요구하는 경우가 많은데,
SSH 접속 방법을 사용하면 자동로그인 기능을 통해 이러한 번거로움을 줄일 수 있다.
SSH 키 생성하기
사용자 컴퓨터에서 SSH 키 생성기를 사용하면 프라이빗 키와 퍼블릭 키가 만들어 진다.
이 키들이 어디에 저장되고 어떤 용도로 사용되는지 살펴보자
1. cd ~ 홈 디렉터리로 이동
2. ssh-keygen
파일 이름은 입력하지 말고 Enter
두 번 더 Enter를 누르면 화면에 SSH를 통해서 다른 컴퓨터에 접속할 수 있는 비밀번호가
생성된다. 실제로 내부를 들여다보면 굉장히 복잡한 비밀번호라서 외부에서 쉽게 공격 곤란,
화면에는 몇 가지 파일 경로가 표시, 그중에 id_rsa 파일이 프라이빗 키이고,
id_rsa.pub 파일이 퍼블릭 키이다.
Your identification has been saved in /c/Users/call1/.ssh/id_rsa
Your public key has been saved in /c/Users/call1/.ssh/id_rsa.pub
3. cd ~/.ssh
ls -al
4. .ssh 디렉터리 안에 프라이빗 키(id_rsa)파일과 퍼블릭 키(id_rsa.pub)파일이
만들어진 것을 확인
깃허브에 퍼블릭 키 전송하기
앞에서 만든 키를 사용해 보기 전에 SSH 방식으로 깃허브 저장소에 접속하는 과정을
간단히 살펴보자. SSH 방식으로 접근하려면 먼저 사용자 컴퓨터에 만들어져 있는
퍼블릭 키를 깃허브 서버로 전송한 다음 저장한다. 사용자 컴퓨터에서 깃허브 저장소에
접속하면 사용자 컴퓨터에 있는 프라이빗 키와 깃허브서버에 있는 퍼블릭 키를 비교한다.
퍼블릭 키와 프라이빗 키는 한 쌍이므로 두 개의 키가 서로 맞으면 사용자 컴퓨터와
깃허브 저장소가 연결된다.
1. cd ~/.ssh
cat id_rsa.pub
2. 해당 문자열 즉 ssh-rsa ....부터 끝까지 선택한 후 마우스 오른버튼 [Copy]
3. 웹 브라우저에서 깃허브에 접속한 후 로그인
화면 오른쪽 상단 사용자 아이콘을 누른 후 [Settings] 선택
4. 여러 설정 메뉴 중 [SSH and GPG keys]를 누른 후 퍼블릭 키를 추가하기 위해
오른 상단에 나타난 [New SSH key]를 누른다.
5. SSH 중 퍼블릭 키는 여러 개을 등록할 수 있기 때문에 Title 항목에 현재 등록하는
SSH 퍼블릭 키를 쉽게 알아볼 수 있도록 제목을 붙인다.
그리고나서 Key 항목에 앞에서 복사한 문자열 키 값을 붙여 넣는다.
6. [Add SSH key] 버튼을 눌러서 SSH 키를 추가하기
7. 퍼블릭 키를 추가할 때 비밀번호를 한 번 확인하는 과정 수행 [Confirm password]
8. 퍼블릭 키를 깃허브 서버에 올렸다. 이제 SSH 키를 만들었던 컴퓨터는 깃허브 저장소의
SSH 주소만 알고 있으면 로그인 정보를 입력하지 않고도 즉시 그 저장소에 접속할 수 있다.
SSH 주소로 원격 저장소 연결하기
SSH 원격 접속 준비 완료
1. 깃허브 사이트 화면 상단 오른 [+] 누른 후 [New repository]를 선택
저장소 이름을 입력한 후 [Create repository]
2. 저장소가 만들어지면 HTTPS 주소가 나타남. 우리는 SSH 방식으로 접근할 것이므로
[SSH]를 눌러서 SSH 주소를 표시
주소복사 아이콘을 눌러서 SSH 주소를 복사한
3. git init connect-ssh
cd connect-ssh
4. git remote add origin 복사한 주소 붙여넣기
5. git remote -v
origin git@github.com:narospace/connect-ssh.git (fetch)
origin git@github.com:narospace/connect-ssh.git (push)
이제부터는 원격 저장소를 사용하는 동안 로그인 정보를 요구하지 않기 때문에
좀 더 편하게 푸시나 풀을 할 수 있게 되었다.
'⚙️ 4. 개발도구 > 4-1 Git' 카테고리의 다른 글
[Git] 6장 깃허브 관리하기 (0) | 2021.11.12 |
---|---|
[Git] 5장 깃허브로 협업하기(2) - 여러 컴퓨터에서 원격 저장소 사용 / 원격 브랜치 정보 가져오기 / 협업에서 브랜치 사용 (0) | 2021.11.11 |
[Git] 3장 깃과 브렌치 - 브랜치 개념 및 정보 확인 / 브랜치 병합과 관리 (0) | 2021.11.08 |
[Git] 2장 깃으로 버전 관리하기 - 깃 저장소 및 버전 생성 / Commit 내용 확인 / 버전 단계 파일 확인 (0) | 2021.11.08 |
[Git] 1장 깃 시작하기 - Git 개념과 설치 및 환경설정 / 리눅스 명령어 (0) | 2021.11.08 |
댓글