[생활코딩] 지옥에서 온 Git 8강~18강
in Development on Git
새롭게 생활코딩에 올라온 GIT을 공부하는게 나을 것 같다 판단하여 ‘지옥에서 온 Git 요약은 여기까지만 하려고 한다.
생활코딩 : 지옥에서 온 Git 을 보고 공부한다.
대충 알던 git을 다시 제대로 공부하기 위함이다.
과거로 돌아가기(reset)
- reset VS revert 이라는 게 있다.
git reset commit메세지 --hard
를 하면 그 커밋에 해당하는 소스코드로 돌아간다.(앞에껀 삭제, 그러나 남아는 있다 눈에 안 보이지만 나중에 복구할 수 도 있다. 나중에 깃의 원리를 배우자.)- 내 컴퓨터에 있는거만 reset해야한다. 공유에서는 reset하면 안된다고 한다.
git revert
라는 것도 있다.(아직은 필요없다. 중요한건 버젼과 버젼간의 차이 이런거 알면됨)
스스로 공부하는법
git commit --help
쳐서 git 내용에 대한 옵션 설명 보기- 예를들어 -a이나 -all을 같이 치면 git add를 치지 않더라도 자동으로 stage에 올릴 수 있다.
- 에디터를 키는거 자체도 귀찮을수 있음 :
git commit -am "version_``"
수련해봅시다.
- 협업하면 여기까지 배운거로는 택도 없다.
git의 원리 소개
- 원리를 알아야 응용가능하고 영감을 가질 수 있다고 생각한다.
git add
- git 내용 보기 :
cd .git
해서ls -al
하면 내용 보기 힘들다. 그러니까gistory
해서 사이트이름localhost:번호
라고 치면 된다. - objects~ 파일은 f1.txt(add한 파일)의 내용이 들어있다.(이걸 오브젝트라 부른다. 혹은 객체)
- index 파일에는 object~로 생긴 파일을 가르키고 파일명이 들어있다.
- 중요:파일 복사할때 일어나는일 :
cp f1.txt f3.txt
를 해서 add했더니 index는 새로 생겼지만 오브젝트는 그대로다(시간만 바뀌었다.), 복사뿐만 아니라 내용이 같다면 오브젝트가 같다.
objects 파일명의 원리
www.sha1-online.com
사이트 들어가면 파일의 내용은 해쉬 알고리즘을 통하면 해쉬값이 나온다.- 주관적인 플로우 : add를 하면 파일의 내용 정보와 부가적인 정보를 추가해서 압축한다. 해쉬를 통해서 나오는 값을 objects라는 디렉토리 안에 만들고 내용 정보 저장 -> 파일명(ex. f1.txt)을 index에 넣어준다.
commit의 원리
- commit을 하면 어떻게 되는가? : 새로운 파일 5개, 직전 2개(몇초전으로 뜸, add할때)도 관련되어 있을거 같다.
- objects~에는 누가 적었는지, 내용, tree 옆에 오브젝트가 들어있다.
- 버젼을 커밋할때 스냅샷해서 tree를 정보구조로 그 정보를 가지고 있다.(이해 어렵다.)
- parent : 이전 버젼들 볼 수 있다.
- tree : commit을 한 그 시점의 파일의 이름과 내용이 tree에 들어있다.
- blob은 파일의 내용을 담음
- 요약 : 커밋시 오브젝트는 3가지를 가진다. 1)blob(내용), tree(내용을 가지는거), commit(그에 해당하는 오브젝트id)
status의 원리
- objects/~ 이거랑 index와 내용이 일치한다면
git status
했을때, nothing to commit이라고 나온다. - 기존에 있던 내용을 바꾼다면, index와 바꾼 파일이 다르다면, modified(수정) 되었다라고 알 수 있다.
- add하면 commit 대기상태라는 걸 알 수 있다.
- git working directory vs index vs repository 라고 구글링해서 이미지로 보면 이해가 빠르다.
branch 소개
- 작업을 하다가 두개로(예를 들어 고객용, 자신용)로 나누는걸(분기라고함) 브랜치를 만든다라고 표현한다.
- 기본적으로 하나의 브랜치를 가지고 있는거라고도 할 수 있다.
- 깃이 가져온 혁신 branch를 쓸만하게 바꿨다.