17P by neo 2023-10-08 | favorite | 댓글 1개
  • git init 시 생성되는 .git 디렉토리에 대한 상세 설명
  • .git 디렉토리에는 config, HEAD, hooks, objects, refs 등 여러 파일과 폴더 포함
    • config 텍스트 파일은 현재 저장소의 git 설정, 작성자 및 파일 모드와 같은 기본 설정 포함
    • HEAD 파일은 기본 브랜치를 가리키는 저장소의 현재 헤드 포함. 기본 브랜치를 뭘로 했냐에 따라서 master 또는 main 등
    • hooks 디렉토리는 git 동작 전후에 실행할 수 있는 모든 스크립트 포함
    • objects 디렉토리는 저장소의 파일과 커밋에 대한 데이터 포함
    • refs 디렉토리는 브랜치와 태그를 가리키는 참조 또는 포인터 저장
  • 파일이 저장소에 추가되면, index 파일을 수정하고 objects 디렉토리에 새 폴더와 파일 추가
  • objects 디렉토리의 새 파일은 추가된 파일의 유형, 크기, 데이터를 포함하며, 파일명은 내용의 sha1에서 가져옴
  • 파일이 커밋되면, 커밋 메시지를 포함하는 COMMIT_EDITMSG라는 새 파일 생성 및 objects 디렉토리에 새 객체 추가 등 여러 변경 발생
  • git에서 브랜치 생성은 refs/heads 디렉토리에 브랜치 이름과 최신 커밋의 ID를 가진 새 파일 추가를 포함하는 간단한 과정
  • 브랜치 체크아웃은 .git/HEAD 파일을 체크아웃된 브랜치를 가리키도록 업데이트하는 것을 포함
  • 브랜치 병합은 세 가지 방법으로 수행 가능: fast forward merge, rebase merge, 별도의 merge commit 생성
  • 저장소가 푸시되면, objects 디렉토리의 모든 것과 명시적으로 푸시된 refs 아래의 모든 브랜치와 태그가 다른 git 저장소로 전송됨

보통 config 만지려 들어가는 폴더죠 ㅎㅎ