Git에 대한 이해 없이 맹목적으로 깃 명령어만 입력하는 제 자신을 봤어요.
그러다 conflict가 발생했는데 git에 대한 이해가 부족하다보니 구글링을 통해 해결하는 것에도 한계가 있더라구요.
Git을 공부할 때가 되었구나!
물 줄기
라고 생각해봅시다. 그렇다면 말하기 쉽죠상대적인 개념
인거죠!git push -u origin main
이제는 Git의 객체에 대해 이해해야할 때 입니다.
더 이상 미룰 수 없다..
blob : 파일
tree : blob을 묶어서 관리(디렉토리 구조와 유사)
commit : 저장 단위, tree+blob+메타정보
tag : 커밋에 대한 참조, 설명
git init
.git안의 빈 깃 저장소를 초기화했습니다.
.git 디렉토리가 생성되네요?
.git 폴더 이게 깃의 로컬 저장소입니다.
우리가 작업하던 공간은 working directory이고
실제 로컬 저장소는 .git 이예요.
tree .git
object라는 객체가 있네요?
echo "hello world" > test.js // 파일 생성해보기
git add test.js
blob 객체가 생긴 거예요.
add 를 하면 Git이 해당 파일을 지켜보게 됩니다. 즉 관리하는 대상이 되는 거죠! 그러니 객체를 생성해요.
git commit -m "first commit"
커밋을 하고보니 54,e6이라는 객체가 2개 생성
되었어요.
tree객체와 commit 객체가 생성된 거예요.
commit은 작업 디렉토리 스냅샷입니다. 마치 게임에서 세이브 포인트라고 생각하면 되겠습니다!
만약 변경된 사항들만 저장했다고 생각해볼까요?
😀저장용량 측면에서는 이득이겠죠.
😣하지만 비교 알고리즘
으로 전으로 돌아거는 등의 연산 비용이 굉장히 커질 것입니다.
그래서 Git은 속도적인 측면을 고려하여
통째로 파일을 저장
해요.
add, commit 또한 이런 원리에 의해서 분리된 것입니다.