본문 바로가기

git & github

원격 저장소와 깃허브

 

컴퓨터 안에 커밋을 저장. 지역 저장소(local repository) 라고 함.

작업 내용을 지역 저장소에만 저장하는 것은 안전하지 않음.

작업하는 컴퓨터가 아닌 다른 곳에 저장공간 마련 필요.

 

원격 저장소

지역 저장소가 아닌 컴퓨터나 서버에 만든 저장소.

지역 저장소가 연결되어 있으며 '백업' 과 '협업'에 중요한 역할을 함.

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

 

깃허브에서 가능한 작업

  • 원격 저장소(깃허브)에서 깃을 사용 가능

깃을 따로 설치하지 않아도 온라인상에서 깃 사용 가능.

지역 저장소와 연결해서 사용 가능.

  • 지역 저장소를 백업 가능

깃허브에 원격 저장소를 만들고 지역 저장소를 연결 후, 동기화 하면 인터넷에 백업 가능.

  • 협업 프로젝트에 사용 가능

누구나 접근 가능하며, 여러 협업 도구를 제공

  • 자신의 개발 이력을 남길수 있음

작업이 초기화면에 날짜별로 기록에 남음

  • 다른 사람의 소스 및 오픈소스 확인 및 참여 가능

 

깃허브

깃허브 가입하기

 
https://github.com/

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

깃허브에 가입했으면 누구나 저장소를 만들 수 있음. 공개 저장소.

 

 

저장소를 만들면 HTTPS주소를 사용해 언제든 깃허브 저장소에 접속 가능.

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

 

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

$ git init local-git
Initialized empty Git repository in C:/Users/test/local-git/.git/

$ cd local-git/
$ vi f1.txt
a

$ git add f1.txt
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory

$ git commit -m "add a"
[master (root-commit) b951b8b] add a
 1 file changed, 1 insertion(+)
 create mode 100644 f1.txt

$ git log
commit b951b8be75fa1f6cd78df1e53d31aa9452945aa1 (HEAD -> master)
Author: unknown <계정명@github.com>
Date:   Sat May 9 19:51:41 2020 +0900

    add a

$ git remote add origin 깃허브 저장소 주소
#예시
$ git remote add origin https://github.com/계정명/test1.git

$ git remote -v
origin  https://github.com/계정명/test1.git (fetch)
origin  https://github.com/계정명/test1.git (push)

 

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

지역 저장소에 파일을 원격 저장소로 올리는 것을 푸시(push)

원격 저장소에 파일을 내려받는 것을 풀(pull)

 

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

지역 저장소의 브랜치를 origin, 즉 원격 저장소의 master브랜치로 푸시하란 명령

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

$ git push -u origin master

#팝업 로그인

Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 204 bytes | 102.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/계정명/test1.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

 

 

 

 

한 번이라도 지역 저장소와 원격 저장소를 연결해서 푸시하면 다음부턴 간단하게 푸시 가능

이미 앞에서 지역 저장소 브랜치와 origin의 master브랜치 연결했으므로....

파일을 푸시할 때는 git push 명령만 사용

$ vi f1.txt
a
b

$ git commit -am "add b"
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory
[master 88d7991] add b
 1 file changed, 1 insertion(+)

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 236 bytes | 236.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/계정명/test1.git
   b951b8b..88d7991  master -> master

 

 

 

 

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

 

 

 

 

 

 

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

원격 저장소와 지역 저장소의 상태를 같게 만들기 위해 원격 저장소 파일을 지역 저장소로 가져옴

깃허브 사이트에서 f2.txt 파일을 새로 만들었으니 그것을 지역 저장소로 가져오기

$ ls
f1.txt

$ 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), 640 bytes | 42.00 KiB/s, done.
From https://github.com/계정명/test1
 * branch            master     -> FETCH_HEAD
   88d7991..4fdc503  master     -> origin/master
Updating 88d7991..4fdc503
Fast-forward
 f2.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 f2.txt

$ ls
f1.txt  f2.txt

$ git log
commit 4fdc503d6493e1823d2571dcea803be7babd79d3 (HEAD -> master, origin/master)
Author: 계정명 <60904920+계정명@users.noreply.github.com>
Date:   Sun May 10 11:11:34 2020 +0900

    Create f2.txt

commit 88d7991fc320de599bdcd07ff48140c4bb6eeaa0
Author: unknown <계정명@github.com>
Date:   Sat May 9 21:27:43 2020 +0900

    add b

commit b951b8be75fa1f6cd78df1e53d31aa9452945aa1
Author: unknown <계정명@github.com>
Date:   Sat May 9 19:51:41 2020 +0900

    add a

 

깃허브에 ssh원격 접속 하기

깃허브의 원격 저장소에 파일을 push/pull 을 하기 위해선 아이디와 비밀번호 입력.(인증 필요)

해당 장비에서 깃허브 저장소에 접속하기 위해 해당 장비(노트북, 서버)를 깃허브에 등록.

ssh를 이용해 자동 로그인 기능을 이용해 인증의 번거로움을 해결.

ssh키 생성

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/test/.ssh/id_rsa): #엔터
Created directory '/c/Users/test/.ssh'.
Enter passphrase (empty for no passphrase): #엔터
Enter same passphrase again: #엔터
Your identification has been saved in /c/Users/test/.ssh/id_rsa #프라이빗 키 경로
Your public key has been saved in /c/Users/test/.ssh/id_rsa.pub #퍼블릭 키 경로
The key fingerprint is:
SHA256:+8mU2rgdrr1i8KLH0Oset4sfdg0Ti0/uKz1grzfdxsefRVQ test@DESKTOP-TEST
The key's randomart image is:
+---[RSA 3072]----+
|   ...E 12312    |
|. .234234        |
|.o..   4564564   |
|.osefrg78  .     |
|.=...dfgcft .    |
|=o+* sdfg4445.   |
|=+*.B   . = o    |
|o*oB +.  + .     |
|oowerw4rdf+      |
+----[SHA256]-----+

$ cd ~/.ssh/
$ pwd
/c/Users/test/.ssh

$ ls -lrt
total 5
-rw-r--r-- 1 test 197609 2610  5월 10 19:17 id_rsa
-rw-r--r-- 1 test 197609  575  5월 10 19:17 id_rsa.pub

 

깃허브에 퍼블릭 키 전송

ssh방식으로 깃허브에 접속하려면

작업 장비에 만들어진 ssh 퍼블릭 키를 깃허브 서버로 전송하고 저장

작업 장비의 프라이빗 키와 깃허브의 퍼블릭 키를 비교하여 맞으면 연결됨

$ cd ~/.ssh/

$ cat id_rsa.pub
ssh-rsa AAAAB3Nza~~~~~~~~ 생략 #해당 내용 복사

 

 

 

 

[ssh 퍼블릭 키를 깃허브 서버에 올림]

 

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

새로운 저장소 생성

SSH를 눌러 주소 복사하기

$ git init connect-ssh
Initialized empty Git repository in C:/Users/test/connect-ssh/.git/

$ cd connect-ssh/

$ git remote add origin SSH주소_붙여넣기
#예시
$ git remote add origin git@github.com:계정명/connect-ssh.git

 

 

'git & github' 카테고리의 다른 글

깃허브로 협업하기  (0) 2020.10.31
브랜치 관리  (0) 2020.10.31
브랜치 병합  (0) 2020.10.31
깃과 브랜치  (0) 2020.10.31
Git으로 버전 관리하기 2  (0) 2020.10.31