Git 내부 동작의 이해

KwonKusang·2021년 7월 30일
0

직접 그리며 이해한 Git

내부 동작

git add 명령어는 변경된 파일들을 commit 하기 전에 staging area에 올리는 과정이다.
git add 명령어로 변경된 파일을 올리게 되면 object 파일(객체)과 index 파일이 생성된다.

  1. object 파일 - 파일의 내용이 담김.
  2. index 파일 - object 파일의 이름과 함께 add한 파일의 이름이 담김.

예를 들어, 'test' 라는 내용이 담긴 file1.txt를 add 했다면

// blob  // object 파일의 내용 // object 파일의 이름은 40자리 문자열로 .git/objects에 위치함.
test

// index 파일의 내용
blob 'object 파일 이름' file1.txt

object 파일의 이름인 40자리 문자열은 파일의 내용인 'test'를 전부 해쉬 테이블에 넣어 도출한 해쉬값이다.

만약 내용이 똑같은 파일 file2.txt를 add 한다면 index 파일은 'object 파일 이름'이 같은 정보가 추가된다.

// index 파일의 내용
blob 'object 파일 이름' file1.txt
blob 'object 파일 이름' file2.txt

git commit 명령어를 실행하게 되면 index 파일의 내용을 옮긴 object 파일과 commit에 대한 정보가 담긴 object 파일이 생성된다.

// index 파일의 내용을 옮긴 object 파일
blob 'object 파일 이름' file1.txt
blob 'object 파일 이름' file2.txt

// commit에 대한 정보가 담긴 object 파일
tree {'object 파일 이름'}
parent {'이전 커밋'}
author {'커밋한 사용자 정보'}
committer {'커밋한 사용자 정보'}

이후 index 파일은 초기화 된다. 이전 커밋에 대한 정보를 갖고 있기 때문에 돌아갈 수 있다.

생활코딩의 지옥에서 온 Git

브런치 전략 Git-flow

코드 품질, 코드 가독성을 높이기 위해 브런치 전략을 세운다.

5가지의 대표적인 브런치가 있다.

  • master : 기준이 되는 브랜치로 제품을 배포하는 브랜치 입니다.
  • develop : 개발 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 합(Merge)칩니다.
  • feature : 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치에 합칩니다.
  • release : 배포를 위해 master 브랜치로 보내기 전에 먼저 QA(품질검사)를 하기위한 브랜치 입니다.
  • hotfix : master 브랜치로 배포를 했는데 버그가 생겼을 떄 긴급 수정하는 브랜치 입니다.

https://uxgjs.tistory.com/183

profile
안녕하세요! 백엔드 개발자 권구상입니다.

0개의 댓글