Git & GitHub

Git과 GitHub

QUERY 2021. 4. 22. 05:50

1. GitGitHub란?

GitGitHub는 다르다.

이름의 유사성 때문에 헷갈리면 안 된다.

 

Git: 버전관리시스템 (version control)

- 오프라인 로컬 저장소

 

GitHub:

- 클라우드를 이용한 외부저장소

github.com/

 

GitHub: Where the world builds software

GitHub is where over 56 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

2. Git과 GitHub를 사용하는 이유, 장점 3가지

- 백업과 같기 때문에 특정 버전(백업)을 통해 과거로 되돌릴 수 있다.

- 여러 사람들이 협업에 용이하다.

- 여러 버전을 테스트, 관리하기에 편하다.

 

 

3. Git과 GitHub 사용방법

3-1. 먼저 설치가 필요하다.

git-scm.com/

 

Git

 

git-scm.com

(위 사이트에서 다운로드 참고)

 

* 설치에 앞서, 설치 여부를 확인할 수 있는 방법:

cmd: git --version

 

* Git에서 사용할 수 있는 명령어 목록 검색 방법:

cmd: git

result:

예) init, add, mv, reset 등이 있다.

    예) 버전관리를 하고 싶은 폴더에서 cmd: git init 입력하면, 해당 폴더의 버전을 관리할 수 있게끔 임시저장소(repository)가           생성된다.

        예) 만약, init이 성공적으로 이뤄졌다면, 현 디렉토리 주소창 뒷부분에 (master)라고 생김.

 

* 주의:  repository에 작업파일이 있다고해서 자동으로 저장되는 건 아니다. 매번 수동으로 원하는 작업물들을 저장해줘야 한다.

 

 

3-2. Git의 작업 순서 : 3단 구조 ( 코드 작업 stage → repository )

- 먼저 작업하는 프로젝트 코드를 작성

- 작성된 코드를 stage 단계에 올리고,

- stage 단계에서 commit을 해야만, 그때 비로소  버전이 만들어지면서 repository에 저장된다.

 

* Tip: 현재 작업 상태를 확인하고 싶을 때 명령어.

cmd: git status

그럼, 작업물이 stage 단계에 올라와 있는지,

올라와 있지 않다면, Untracked files 라고 뜰 것이고,

그 중 수정된 파일이 있다면, modified: 파일명이 뜰 것이고,

올라와 있다면, commit이 돼 repository에 저장이 됐는지 여부를 확인할 수 있다.

 

3-3. 작성한 코드를 stage 단계에 올리는 법

cmd: git add [올리고자하는 파일 이름]

- 작업한 파일 전체를 한번에 stage에 올리는 방법:

cmd: git add .

(참고: 위의 . 은 모든 파일이라는 의미이다.)

 

3-4. repository(저장소)에 commit하기

cmd: git commit -m "버전 제목(작업내용을 나타내는 제목)"

-m은 메시지를 뜻한다.

* Tip: 버전 제목은 작성자가 어떤 작업을 했는지, 왜 해당 버전이 생성됐는지 쉽게 확인할 수 있도록 작성하면 좋다. 협업에 유용.

 

3-5. 저장된 버전들을 확인하고 싶을 때.

cmd: git log

(시간 역순으로 화면에 정렬된다. 맨 위가 가장 최근 버전)

 

* 각 commit마다 고유번호가 부여되는데,

나중에 작업물을 과거로 되돌려야하는 경우 사용된다.

 

* Tip: 버전 별로 차이점을 확인하고 싶을 때

cmd: git log -p

종료할 땐, q

 

3-6. Git 유저의 정보를 확인하는 방법

cmd: git config --list

git log로 repository에 저장된 버전 목록을 보면, 유저명과 이메일 주소 등이 표시된 것을 볼 수 있다.

버전을 생성한 사람이 누구인지 확인시켜주기 때문에 협업할 때 유용하게 사용된다.

유저 정보의 경우, 로컬에서 사용하는 경우, 최초 한 번만 설정해주면 되고,

AWS C9 같은 가상환경에서 git을 사용하는 경우 새로운 환경 마다 매번 지정해줘야 한다.

 

* Tip: 보통 편의를 위해 Git의 유저명과 이메일 주소로 GitHub의 아이디와 이메일주소를 사용한다.

cmd: git config --global user.name "유저 이름"
cmd: git config --global user.email "유저 이메일"

 

3-7. 작업에 문제가 생겨 코드를 과거로 돌리고 싶을 때

cmd: git reset [commit의 고유번호]

그럼 해당 버전 이후의 작업물들은 삭제된다.

 

3-8. 로컬 Git 저장소에 저장한 작업물을 클라우드 외부저장소 GitHub으로 Push하는 방법

- 목적: 클라우드 백업, 작업환경과 장소의 구애를 받지 않고, 공유와 협업이 편하고, 취업용 포트폴리오로도 활용

 

우선, GitHub에 회원가입 후, 로그인.

좌측 메뉴에서 새로운 repository를 생성한다.

그럼, 3가지의 Quick setup 가이드가 제시된다.

- 새 저장소를 생성하는 방법

- 기존의 있던 저장소를 업로드하는 방법

- 다른 저장소의 코드를 가져오는 방법

 

 

3-8-1. 새 저장소 생성 방법 (가이드에 제시한 코드를 복붙하면 된다.)

cmd: git remote add origin 개인 깃허브 주소(제시된 가이드에 이미 잘 표기돼 있으므로, 그대로 복사해오면 된다.)

그럼 origin이라는 이름으로 외부 저장소가 등록이 된다.

로컬에 있는 repository를 origin으로 보내줄 수 있게 된다.

cmd: git push origin master

그럼 master branch에서 작업 중인 최신 commit 내용을 GitHub에 올리게 된다.

이때, GitHub 아이디와 비밀번호를 입력해줘야 한다.

그럼, GitHub 페이지에 로컬 작업물들이 업로드된 것을 확인할 수 있다.

 

여기까지 완료하면, 로컬 저장소에만 저장해뒀던 코드 작업물들을 외부 저장소로 업로드하게 된 것이다.

 

 

3-8-2. 기존 저장소 업로드 방법

(가상환경) 상태에서,

git config --global user.name "이름"

git config --global user.email "이메일 주소"

git config --global push.default matching

git config --global alias.co checkout

git init

=> initialized empty Git repository in 로컬 지정 경로/.git/

(여기서 마지막 git 앞에 붙은 . 은 보이지 않는 파일이라는 의미이다.)

 

(virtual_env) 로컬 작업경로 (master)

뒤에 master가 생기면, git이 켜졌고, 작동한다는 뜻이고, master branch를 의미한다.

cmd: git add .

cmd: git commit -m "작업 내용 제목"

 

여기까지 과정: 로컬 저장소 Git에 작업물을 저장한 것.

 

이번엔 github에 접속해서 새 repository 생성한다.

매번 새로운 프로젝트를 할 때마다, 새 repository를 만들어주면 된다.

 

* 로컬 컴퓨터에서 SSH 키를 발급받아서 GitHub에 저장해야 한다.

그래야 로컬 컴퓨터와 GitHub을 안전하게 연결시킬 수 있다.

 

ssh 키는 가상환경을 종료시키고,

로컬 드라이브에 폴더를 만들어 저장하는 게 좋은데.

cmd: deactivate

cmd: mkdir ~/.ssh

(여기서 ~ 표시는 default directory를 의미한다. 보통 윈도우/맥 로그인 유저명이 defualt directory다.)

(여기서 . 은 비공개기 때문에 ls를 입력해도 terminal창에 보이진 않는다.)

cmd: cd ~/.ssh

 

* Tip: 현재 경로를 확인하는 방법

cmd: pwd

 

보통 terminal bash에는 키 생성 프로그램이 설치돼 있다.

cmd: ssh-keygen.exe

그럼 public/private rsa key pair 가 생성된다.

현 디렉토리에 저장하려면 그냥 enter.

그 다음엔 비밀번호를 입력해야 하는데,

이때, 이미 한 차례 보호된 ssh키이기 때문에 추가로 비번을 지정하는 게 무의미하고 비효율적이라고 믿어 비번설정 없이 enter 누르고 넘기는 사람들도 있다. 본인 선택. 

이때 저장한 비번은, GitHub으로 작업물을 배포(Push)할 때마다 입력해야하기 때문에 번거롭긴하다.

만에하나 잊어버리기라도 하면, 전 과정을 다시해야하는 상황이 발생할 수도 있다.

 

비밀번호 설정까지 마치면, 이미지와 함께 키 생성 완료.

cmd: ls

result: id_rsa, id_rsa.pub

(여기서 id_rsa는 개인용 키이기 때문에 절대 공개하거나 GitHub에 올리면 안 된다.

반대로, id_rsa.pub은 공개 키로 GitHub에 올려준다.)

cmd: cat id_rsa.pub

그럼 엄청 길고 복잡한 public key가 나타날 것. 

그걸 전부 복사해서 GitHub 페이지, 우측 상단 프로필 사진을 클릭. 아래 settings 클릭

좌측 메뉴바에 SSH and GPG keys 클릭

New SSH key 클릭. 

title을 입력하고,

key란에 방금 복사한 public key를 붙여넣는다.

그리고 SSH key 추가 클릭.

비번 입력해서 확인시켜주면 끝.

 

새로운 repository  생성하고.

terminal로 이동.

가상환경 켜고, (master) 여부로 git작동하는지 확인한 후,

manage.py 파일이 있는 django 디렉토리로 이동.

github에서 repository 생성할 때 뜨는 setup 가이드 라인에 적힌 코드를 그대로 복사해서 cmd에 입력하면 된다.

cmd: git remote add origin git@github.com:본인 깃허브 별명/프로젝트명.git 
cmd: git push -u origin master
cmd: yes

끝. 

깃허브에 가서 잘 업로드 됐는지 확인한다.

 

* Tip:

매일 작업을 하는 사람이라면, 작업 마지막에 항상 깃허브에 업로드하는 습관을 들이자.

만약, 큰 작업을 앞두고 있다면, 작업을 시작하기 전에 한 번, 작업을 마친 다음에 한 번.

그렇게 버전을 나눠서 관리하는 게 좋다.