git은 VCS(virsion control system)중에서도 Distributed Version Control을 지향한다!🧐 (이게무람ㅎㅎ) 즉, 서버에만 history를 가지는게 아니라 각각의 개발자 모두가 history를 가지고 있는다! 이러면 서버에 문제가 생기거나 offline 상황에서도 작업이 가능한 장점을 가진다
git은 프로젝트가 진행되는 동안 각각의 버전을 snapshot
을 통해 가지고 있다! 이렇게 프로젝트의 전체적인 부분을 snapshot 형태로 가지고 있다보니 각각의 version들을 쉽게 왔다갔다 할 수 있다! (뭔가 위험해 보이는거 해보고싶을때 남모르게 가능...)
snpashot
은 그렇게 무겁지 않은데 변경되지 않은 부분들(파일들)은 이전의 링크를 가리키기 때문!git에는 총 3가지의 작업 환경으로 나뉜다.
말 그대로 우리가 작업하는 공간! Untracked / Tracked으로 다시 나뉠 수 있다.
특정 작업을 마치고 버전 history에 올라갈 준비가 된 녀석들을 옮겨놓는 장소 ( commit 준비 완료!)
commit
(스냅샷!!)이라는 명령어를 통해 git directory로 보낸다!commit
에는 스냅샷을 통해 저장된 고유의 해쉬코드가 부과된다. 이를 참조해 각각의 버전에 접근할 수 있는 것. 버전에 history를 가지고 있는 장소
checkout
이라는 명령어를 통해 원하는 버전으로 돌아갈 수 있다!push
명령어를 사용해 서버에 업로드 할 수 있다.pull
명령어문돌이가 카페에서 그렇게 멋있어 보였던 CLI 환경에서 작업한다.😄
cmd + ~ : vscode에서 터미널 열기
git init
: 깃을 초기화 한다. 이 프로젝트(폴더)가 git으로 관리된다!!! 라는 신호git config --global name "my name"
: 이름 등록git config --global email "my email"
: 이메일 등록git status
현재 어떤 branch로 작업하고 있는지, commit의 유무, 현재 파일들의 상태를 확인할 수 있다. 위 사진은 untracked된 파일들이 있으니 add
를 통해 3가지 untracked된 파일 3가지를 tracked 상태로 만들어 봐라아~ 라고 하는것.
TIP!
git config --global alias.st status
st
로 사용 가능!git add a.txt
: a 파일을 staging area에 올려줘!git add *.txt
: txt파일 전부를 staging area에 올려줘!git add .
: 모든 파일 staging area로!git rm --cached *
: staging area에 올라와 있는 파일들을 다시 working directory로 돌려보내기 ( untracked된 상태로 되돌아간다)git commit -m "추가할 메세지"
: staging area에 있는 변경된 내용들을 git directory로 옮겨준다.git log
: commit한 기록들을 볼 수 있다.두가지 방법 존재
git reset [돌아갈 버전의 hashcode 6자리] --hard
추가적인 branch를 파서 작업을 하면, 기존 프로젝트에 영향을 주지 않고도 내가 해보고 싶은 작업들을 자유롭게 해볼 수 있다!! 말그래도 별도의 새로운 가지를 파는 것!
git branch
: 생성된 branch들과 현재 적용되어 있는 branch를 확인할 수 있다.git branch [사용할 branch 이름]
: 새로운 branch 생성git checkout [변경할 branch 이름]
: 이동하고 싶은 branch로 이동!