깃은 버전 관리 시스템으로, 각 버전이 만들어진 순간의 스냅샷을 갖고 있다.
이를 통해 버전 간 차이를 쉽게 비교할 수 있다.
github.com은 파일의 내용과 git(버전)을 보관한다.
SSH는 Secure Shell의 줄임말로, 양 컴퓨터간 통신을 주고 받는 하나의 방법이다.
git의 경우, 내 컴퓨터(local)와 원격저장소(origin) 간 통신을 주고 받기 위해 사용한다.
SSH는 개인키와 공개키 2종류가 존재하며, 이를 통해 통신을 암호화하고, 신뢰할 수 없는 사용자의 접근을 차단한다.
공개키는 모두에게 공개되는 키이며, github가 가지는 키이다.
개인키는 내 컴퓨터에 저장되는 키이며 해킹당하면 큰일난다!
모든 명령어는 Git bash에서 진행되어야 한다.
bash에 명령어 ssh-keygen
을 입력한다.
그러면 특정 디렉토리에 id_rsa
와 id_rsa.pub
가 생성될 것이다.
이름에서 알 수 있듯이 pub가 붙은 쪽이 공개키, 나머지는 개인키이다.
공개키의 디렉토리를 찾아가서, 공개키의 내용을 복사한다.
이후 깃허브의 내 계정 설정에 들어가면 SSH and GPG keys
라는 메뉴를 찾을 수 있다.
여기서 새 SSH keys를 등록하면 된다.
SSH 인증키를 가진 사람만 원격저장소에 내 파일을 업로드 할 수 있다.
※ Clone은 SSH 인증키가 없어도 누구나 가능하다.
클론하고 싶은 저장소에서 Code
버튼을 누르면 SSH 소스를 복사할 수 있다.
VS Code의 새 창을 열어 Clone Repository
를 클릭한다.
클릭하면 상단의 입력창이 활성화되는데, 여기에 소스를 넣고 마지막으로 컴퓨터에 저장할 위치(디렉토리)를 지정하면 클론이 완료된다.
git은 버전을 생성할 때, 버전을 생성하 사람의 이름과 이메일을 함께 저장한다.
때문에 최초 1회에 한해서 우리의 이름과 이메일을 등록해야한다.
git config --global user.email <이메일>
git config --global user.name <이름>
--global
옵션을 이용하면 모든 저장소에서 동일한 이메일과 이름을 설정할 수 있다.
만약 저장소 별로 서로 다른 정보를 사용하고 싶다면 이 옵션을 빼면 된다.
git graph는 VS Code의 익스텐션으로, git 버전 관리를 GUI를 통해 제공한다.
working directory : 아직 .git에 등록되지 않은 파일로, 현재 작업중인 파일의 영역이다.
stage area : 일종의 장바구니와 같다.
Commit할 준비가 된 파일들을 의미한다.
Add : working directory에 있는 파일을 stage area에 올리는 작업을 의미한다.
Commit : stage area에 있는 파일을 내 컴퓨터 저장소(.git)에 올리는 작업이다.
Push : 내 컴퓨터의 버전을 원격 저장소에 업로드하는 작업이다.
Checkout은 HEAD를 옮기는 작업이다
git graph에서 원하는 버전, 브랜치를 더블클릭하거나, 우클릭->Checkout을 통해 사용할 수 있다.
무언가 버그가 발생했을 때 버그가 난 시점을 찾거나 할 때 사용할 수 있다.
이게 버전관리의 중요성인데, 대부분의 버그는 당장 발견되지 않고 나중에 문제가 되는 경우가 많다.
만약 버전관리가 안되어있다면 모든 코드를 전수조사해야한다.
하지만 버전관리를 통해 checkout
을 이용하여 버그가 발생하지 않는 시점을 쉽게 찾을 수 있다.
서로 다른 브랜치나 서로 다른 버전을 합치는 과정이다.
이때 버전A, 버전B, 버전 A·B의 공통 부모 3개의 버전을 이용한다.
왼쪽부터 공통부모, 버전M, 버전E이다.
일일 TIL이므로 최대한 간결하게 쓰려고 했는데 잘 안됐다.
시간도 많이 잡아먹었고 핵심 내용을 잘 쓴 것 같지도 않다.
별로 도움이 안되는 내용인듯...
내일 TIL은 좀더 컴팩트하고 핵심만 담을 수 있게 무작정 타자를 두들기기 전에 생각을 좀 하고 써야겠다.