GIT
incredibly COMPLEX
Version
단위 > 작업의 완결 상태 - 의미있는 변화 == 버전
효용성
- 차이점 과거 시점 내용
- 과거로의 회귀
Git stage area
git add 과정을 통해 commit 하고싶은 파일만 하게끔 함 : add 한 파일만이 commit 됨 - 선택적 commit이 가능함
add 된 파일의 commit 대기 장소 … 대합실
git diff
( commit ) 버전 간의 소스코드 차이
회귀
reset
1 |
|
옵션은 hard, soft 등 존재
해당 아이디가 가장 최신이 됨
버려진 파일들은 어딘가에 남아 복구할 수 있음. 공유 이후의 reset X
revert
commit을 취소하면서 새로운 버전을 만듦
원리
add 원리
gistory
1 |
|
설치 후 .git 폴더 진입 > gistory
> 웹 브라우저에서 이미지 내 해당 주소로 진입
index 내 파일이 add 한 오브젝트 (객체)
git은 파일 저장 시 파일의 이름이 달라도 내용이 같으면 같은 오브젝트로 저장한다.
Objects
- 파일 내용 함양 - blob
- 어떤 디렉토리의 파일명과 그 파일내용-blob 을 담고있는 것 - tree
- commit
Object 파일명의 원리
저장 파일은 SHA1로 해쉬값을 생성
78981922613b2afb6025042ff6bd878ac1994e85
: 해쉬값
가장 앞 2자리 78을 이름삼아 디렉토리 생성, 981922613b2afb6025042ff6bd878ac1994e85을 이름으로 파일에 내용을 저장
commit 원리
commit msg도 내용처럼 object 안에 포함됨
:: Parent - 이전 commit이 누구인가?
:: Tree - commit이 일어난 시점에의 작업 dir에 있는 파일 이름과 내용 - 각 커밋은 트리를 가지고 있어서 그 커밋이 만들어진 시점의 파일의 이름과 내용이 담겨있음 (해당 트리는 파일 이름과 내용이 링크가 되어있기 때문에,) 버전에 적혀있는 트리를 통해 버전이 만들어진 시점 » 프로젝트 폴더에 대한 상태를 알아냄 (aka snapshot)
status 원리
index 와 가장 최신 commit 내용 일치 == 현재 커밋할 것 없음 » 해쉬값의 변화로 인한 status 알림!이라고 짐작할 수 있음
TBC