# 이 챕터에서 내가 기억해야 할 만한 것들만 정리
# Git에 대한 기초적인 내용은 이전 챕터까지로 마무리하고 이 챕터부터는 GitHub를 활용하는 방법에 대해서 배우게 된다.
- GitHub에 원격 저장소 만들기
- GitHub에서 공개 Repository를 만드는 방법에 대해서 알아보자. (적당히 사진은 생략)
1. GitHub에 로그인하여 화면 오른쪽 위에 있는 [+]를 누르고 [New Repository]를 선택한다.
2. 빈칸을 적절히 입력한 후 [Create Repository]를 눌러 새 Repository를 생성한다.
- Repository name : 저장소의 이름이다.
- Description : 필요하다면 간단하게 저장소에 대한 간단한 설명을 남길 수 있다.
- Public / Private : 저장소의 공개/비공개 여부를 결정한다.
- Initialize this repository with: Add a README file : 저장소에 대한 소개와 설명을 작성하는 README 파일을 자동으로 만드려면 체크한다. 이번 저장소를 만들때는 사용하지 않겠다.
- Initialize this repository with: Add .gitignore : 어떤 언어와 관련된 것들을 .gitignore 파일에 지정할 지 선택한다.
- Initialize this repository with: Choose a license : 오픈 소스 프로젝트를 위한 저장소를 만들 경우 해당 오픈 소스의 라이선스를 선택한다.
앞으로는 https://github.com/Fuyuu/doit_github 주소를 통해 내가 만든 Repository에 빠르게 접근할 수 있다.
- Local Repository (지역 저장소) 만들기
- 앞에서 예제들을 위해 만들었던 것들 대신 GitHub에 연결할 새로운 Local Repository를 만들어보자.
$ cd ~
$ git init local_git
$ cd local_git
$ vim f1.txt
홈 디렉토리로 이동해 새 디렉토리를 만들고 f1.txt라는 문서를 생성했다.
dndkg@kei MINGW64 ~/local_git (master)
$ git log
commit 06afd05a5c83dbba336d86a1460c084187fc2854 (HEAD -> master)
Author: fuyuu <dndkgds@gmail.com>
Date: Tue Jul 19 02:52:35 2022 +0900
add a
적당한 내용을 작성한 뒤 바로 커밋해준다. 이러면 일단 적당한 Local Repository는 준비되었다.
- Remote Repository (원격 저장소)에 연결하기
- 이제 내 컴퓨터에 있는 Local Repository를 GitHub의 Remote Repository와 연결해 보도록 하겠다.
우리 GitHub님께서 이끄시는 대로 "커맨드 라인에서 기존 Repository를 Push하는 방법으로 연습해보겠다.
1. 연결할 GitHub의 Remote Repository 주소를 확인한다. 나는 https://github.com/Fuyuu/doit_github에 연결하겠다.
2. 터미널 창에 다음과 같이 입력한다.
$ git remote add origin https://github.com/Fuyuu/doit_github
이 명령은 Remote Repository에 Origin을 추가하겠다고 Git에게 알려주는 것이다. https://github.com/Fuyuu/doit_github라는 주소가 너무 길기 때문에 Origin이라는 단어로 줄여서 Remote Repository에 추가하는 것이다. 이렇게 Local Repository를 특정 Remote Repository에 연결하는 것은 한번만 하면 된다.
* Git에서 기본 브랜치를 master라고 하는 것처럼 기본 Remote Repository에는 origin이라는 이름을 사용한다.
3. 다음 명령어를 입력해 제대로 연결되었는지 확인해보자.
$ git remote -v
dndkg@kei MINGW64 ~/local_git (master)
$ git remote -v
origin https://github.com/Fuyuu/doit_github (fetch)
origin https://github.com/Fuyuu/doit_github (push)
다음과 같이 표시되면 잘 연결되어 있는 것이다. fetch와 push에 대해서는 조금 있다가 알아보도록 하자.
- Remote Repository에 파일 올리기
$ git push -u origin master
- Local Repository의 브랜치를 Remote Repository의 master 브랜치로 push하라는 명령이다. -u 옵션은 Local Repository의 브랜치를 Remote Repository의 master 브랜치에 연결하기 위한 것으로 처음에 한 번만 사용하면 된다.
명령을 실행하면 GitHub에 로그인하라는 창이 뜨는데 그냥 로그인해주면 된다.
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 202 bytes | 202.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: error: GH007: Your push would publish a private email address.
remote: You can make your email public or disable this protection by visiting:
remote: http://github.com/settings/emails
To https://github.com/Fuyuu/doit_github
! [remote rejected] master -> master (push declined due to email privacy restrictions)
error: failed to push some refs to 'https://github.com/Fuyuu/doit_github'
그런데 바로 오류를 뿜어버린다. 이 오류는 내가 GitHub에서 내 이메일 주소를 Private로 설정했기 때문에 뜨는 오류이다.
밑줄 친 부분의 체크박스를 해제한 후 저장하면 제대로 push가 완료된다.
dndkg@kei MINGW64 ~/local_git (master)
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 202 bytes | 202.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/Fuyuu/doit_github
* [new branch] master -> master
branch 'master' set up to track 'origin/master'.
GitHub 웹페이지를 새로고침해 다시 확인해 보면 제대로 연동이 완료된 것을 확인할 수 있다.
일단 한 번 연결했으면 그 다음부터는 더욱 간단하게 push할 수 있다. 예제를 통해 알아보자.
$ git push
이제는 Local Repository의 브랜치와 origin의 master 브랜치가 연결되었기 때문에 뒤에 뭘 쓸 필요 없이 위 명령만 써주면 바로 push할 수 있다.
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 234 bytes | 234.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/Fuyuu/doit_github
06afd05..c3d05a5 master -> master
바로 커밋이 push되었고 웹페이지를 새로고침하면 내가 수정한 커밋을 확인할 수 있다.
- GitHub 사이트에서 직접 커밋하기
- 일반적으로는 Local Repository에서 작업 후에 커밋을 완료하고 push하는 방법을 많이 사용하지만, 이제는 GitHub 웹페이지에서도 바로 작업하고 커밋할 수도 있다.
- GitHub 웹페이지에서 Add file -> Create new file을 선택한다.
- 맨 위에 파일 이름을 입력한 후 내용을 작성한다.
- 필요하다면 하단에서 커밋 메시지를 입력한다.
- Commit new file을 눌러 커밋을 완료한다.
- Remote Repository에 새로운 커밋이 추가된 것을 확인할 수 있다.
- Remote Repository에서 파일 내려받기
- Local Repository와 Remote Repository 간 차이가 생겼을 때 둘의 상태를 같게 만들기 위해 원격 저장소의 소스를 지역 저장소로 가져올 수 있다. 이것을 pull한다고 표현한다.
$ git pull origin master
위 명령은 origin의 내용을 master 브랜치로 가져온다는 뜻이다.
* 기본 원격 저장소가 origin이고 지역 저장소의 기본 브랜치가 master이기 때문에 git pull만 입력해도 되기는 한다.
$ git pull origin master
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 633 bytes | 211.00 KiB/s, done.
From https://github.com/Fuyuu/doit_github
* branch master -> FETCH_HEAD
c3d05a5..e95cff1 master -> origin/master
Updating c3d05a5..e95cff1
Fast-forward
f2.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 f2.txt
정상적으로 두 저장소 간의 동기화가 완료되었다.
※ GitHub에 SSH 원격 접속하기
- SSH 원격 접속이란?
- SSH는 Secure SHell의 줄임말로 보안이 강화된 안전한 방법으로 정보를 교환하는 방식이다. 사용자 컴퓨터에서 SSH 키 생성기를 통해 프라이빗 키와 퍼블릭 키를 생성하고, 이 2개의 키를 통해 현재 사용하고 있는 기기를 GitHub에 인증하는 방식이다. 이렇게 하면 터미널 창을 이용할 수 있는 상태라면 언제 어디서든 깃허브에 접속할 수 있다. 또한, SSH 접속 방법을 사용하면 자동 로그인 기능을 사용하여 빠르게 이용할 수 있다. 여기서는 굉장히 간단하게만 적어보았다.
- SSH 키 생성하기
1. 터미널 창에서 홈 디렉토리로 이동한다.
$ ssh-keygen
위 명령어를 입력하면 SSH 키가 저장되는 디렉토리 경로가 표시되며 파일 이름을 입력하라고 하는데, 파일 이름은 입력하지 말고 Enter를 누른다.
2. 두번 더 Enter를 눌러주면 키가 생성된다.
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/dndkg/.ssh/id_rsa):
Created directory '/c/Users/dndkg/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/dndkg/.ssh/id_rsa
Your public key has been saved in /c/Users/dndkg/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:N06YV/ExeGFBX4WzwwsEfXWbNY46YKkzjbGDIbGC/to dndkg@kei
The key's randomart image is:
+---[RSA 3072]----+
| . .o.oB*B|
|. o . ++B+B|
|.. o . . + ..=.*.|
|. . . o Bo..o + |
| . . BS.=o . o |
| . += .. . |
| . . |
| o |
| . E |
+----[SHA256]-----+
여기서 id_rsa 파일이 프라이빗 키이고, id_rsa.pub 파일이 퍼블릭 키이다.
dndkg@kei MINGW64 ~/.ssh
$ ls -la
total 17
drwxr-xr-x 1 dndkg 197609 0 Jul 19 19:24 ./
drwxr-xr-x 1 dndkg 197609 0 Jul 19 19:23 ../
-rw-r--r-- 1 dndkg 197609 2590 Jul 19 19:24 id_rsa
-rw-r--r-- 1 dndkg 197609 563 Jul 19 19:24 id_rsa.pub
정상적으로 프라이빗 키와 퍼블릭 키가 생성된 것을 확인할 수 있다.
- GitHub에 퍼블릭 키 전송하기
- SSH 방식으로 접근하기 위해서는 먼저 사용자 컴퓨터에 만들어져 있는 퍼블릭 키를 GitHub 서버로 전송한 다음 저장한다. 이후에 사용자 컴퓨터에서 GitHub 저장소에 접속하면 사용자 컴퓨터의 프라이빗 키와 서버에 저장된 퍼블릭 키를 비교해 서로 맞으면 연결되는 방식이다.
1. cat 명령을 이용해 id_rsa.pub 파일의 내용을 확인한다.
$ cat id_rsa.pub
2. ssh-rsa부터 문자열 끝까지 복사한다.
3. GitHub 웹페이지의 Settings에 들어간다.
4. SSH and GPG keys 탭으로 들어가서 New SSH key를 눌러 퍼블릭 키를 추가할 준비를 한다.
5. 적당히 제목을 붙이고 아까 복사했던 퍼블릭 키를 붙여넣기 한 다음 Add SSH key 버튼을 눌러 키를 추가한다.
- SSH 주소로 원격 저장소 연결하기
- 이제 SSH 주소를 사용해 Local Repository와 Remote Repository를 연결해보겠다.
1. GitHub에서 New Repository를 생성한다.
2. HTTPS와 SSH 중에 SSH를 선택하고 나온 주소를 복사한다.
3. 홈 디렉토리에 연습을 위한 connect_ssh 저장소를 만든 후 해당 디렉토리로 이동한다.
4. git remote add origin 명령 뒤에 복사한 주소를 붙여넣는다.
$ git remote add origin git@github.com:Fuyuu/connect_ssh.git
5. git remote -v 명령을 통해 확인해보면 정상적으로 원격 저장소가 연결된 모습을 확인할 수 있다.
$ git remote -v
origin git@github.com:Fuyuu/connect_ssh.git (fetch)
origin git@github.com:Fuyuu/connect_ssh.git (push)
# Ch.05와 Ch.06은 협업과 README 문서, 개인 블로그 등 소통과 협업에 관련된 것들을 다루기 때문에 잠시 미뤄두기로 하고 부록으로 있는 VSCode에서 Git을 활용하는 방법에 대해서 먼저 다뤄보고자 한다.
'Git' 카테고리의 다른 글
[Do it! Git&GitHub] Ch.03 깃과 브랜치 (0) | 2022.07.18 |
---|---|
[Do it! Git&GitHub] Ch.02 깃으로 버전 관리하기 (0) | 2022.07.12 |
[Do it! Git&GitHub] Ch.01 깃 시작하기 (0) | 2022.07.10 |