#12 Git : 원리 - commit

김현준·2022년 10월 9일
0

GIT

목록 보기
12/41

이번에는 Commit 의 원리에 대해 알아보겠습니다.

f4.txt 파일을 vim 명령을 통해 새로 만들고 내용을 f4 로 한 뒤
git add 명령을 했습니다.

이후 커밋 메세지를 1 로 저장하겠습니다.

이후 gistory 를 통해 파일을 확인하면 커밋메세지의 내용이 object 파일안에 담겨져있습니다.

📌 커밋을하면 그 버전도 파일의 내용처럼 object(객체)에 저장됩니다.

이때 tree 부분의 해쉬 값을 클릭하면 이때까지 커밋한 파일의 목록이 뜹니다.

이번에는 f2.txt 의 파일내용을 y\nz 로 바꿔보겠습니다.

그리고 f2.txtadd 해주고 커밋메세지를 2 로 해보겠습니다.

gistory 를 새로고침하면 저번에 만들어 두었던 f2.txt 파일을 볼수 있습니다.
이때 parent 의 해쉬값을 클릭하면 이전 커밋의 내용 을 볼 수 있습니다.

하지만 첫번째 커밋과 두번째 커밋의 트리해쉬 값이 각자 다릅니다.

또 중요한것은 이전 커밋의 트리해쉬값을 클릭하고 f2.txt 파일의 내용을 보면 처음작성하였던 souce:3 의 내용이 나옵니다.

하지만 가장 최근의 커밋에서 트리해쉬값을 클릭한 후 f2.txt 파일의 내용을 보면 금방만든 y\nz 의 내용이 나옵니다.

📌 즉 커밋을 통해 만든 버전마다 그 시점의 커밋메세지와 파일의 내용을 모두 확인 가능합니다.

우리는 버전에 적혀있는 트리를 통해서 버전이 만들어진 시점의 프로젝트 상태를 확인 할 수 있습니다. 이를 '사진을 찍었다'라는 뜻에서 스냅샷(snapshot) 이라고 부르기도 합니다.
즉 각각의 버전은 그 버전이 만들어진 스냅샷을 트리라고 하는 정보 구조를 통해 가지고 있습니다.

이번에는 d1 이라는 폴더를 만들어 보겠습니다.

cp 명령을 통해 f4.txt 를 복사해줍니다.

git status 를 통해 d1 폴더가 만들어 진것을 확인할 수 있습니다.

이후 d1/f4.txt 파일을 addcommit 을 해보겠습니다.

gistory 를 새로고침하면 각각의 커밋의 트리와 자식을 볼 수 있고 그 커밋이 만들어진 시점의 파일의 이름과 파일의 내용을 확인할 수 있습니다.
화면 상단의 [commit] 8374~ 와 같이 커밋고유의 해쉬값도 확인가능합니다.

이때 d1 디렉토리는 다른 파일과는 다르게 tree 라는 문구가 있으며
그 밑에(자식)파일은 복사했던 f4.txt 파일과 그 내용이 담겨있습니다.

따라서 object 는 크게 3종류의 내용을 담고있습니다.

  • blob 는 파일의 내용을 담고있다는 뜻을 가지고있습니다.

  • tree 는 어떤 디렉토리의 파일명과 그 파일명에 해당되는 파일(blob)의 내용을 담고있습니다.

  • commit 은 각각의 고유한 해쉬값을 가지고 있습니다.

profile
울산대학교 IT융합학부 22학번

0개의 댓글