[부스트캠프 웹·모바일 8기] 챌린지 13-14일차 학습 정리

허지예·2023년 7월 26일
post-thumbnail

git의 내부 동작

이미지 출처) [Git] 내부 동작 원리에 대한 이해

용어 정리

  • 로컬(Local) = Working Directory = Working Copy
    • 실제 위치: 프로젝트 폴더
    • 현재 프로젝트 폴더에 있는 파일들을 의미한다.
  • 인덱스(Index) = Staging Area = Cache
    • 실제 위치: .git/index
    • 개념적으로는 커밋이 이뤄질 준비가 된 파일의 내용들이 위치하는 영역을 의미함.
    • git add 명령어를 수행하면 변동 사항을 이 인덱스 영역에 반영시킬 수 있음.
    • .git/index 파일에는 커밋이 이뤄질 준비가 된 파일들의 파일 명과 내용을 담고 있는 Blob 파일의 주소가 기록됨.
  • 저장소(Repository)
    • 실제 위치: .git/objects/ 아래
    • 깃이 버전 관리를 하기 위해 필요한 데이터들을 저장하는 곳이다.
    • 여러 버전들에 해당하는 파일들의 내용이 Blob 파일로서 이곳에 저장되어 있음.
    • 이 곳에 저장된 파일들을 특별히 오브젝트 파일이라고 부름.
      (Blob 파일도 오브젝트 파일의 한 종류)
  • 오브젝트 파일
    • Blob 파일
      • 버전 관리하는 파일들 각각의 내용은 깃의 저장소에서 Blob 파일의 형태로 저장됨.
      • 파일의 내용에 SHA1이라는 해싱 기법을 적용하여 Blob 파일의 이름을 얻어내서 내용이 같은 파일들은 하나의 Blob 파일로서 저장됨.
    • Commit 파일
      • 하나의 버전을 생성한다는 것은 하나의 commit 파일을 만드는 것.
      • commit 파일은 하나의 tree 파일을 가리키고, 이 가리키고 있는 tree 파일의 주소와 직전 버전에 해당하는 commit 파일의 주소가 기록됨.
    • Tree 파일
      • 커밋 시점의 파일들 각각에 대해 그 파일 명과 해당 파일의 내용을 담고 있는 Blob 파일의 주소가 기록됨.
        • 인덱스 파일(.git/index)과 성격이 유사함.

git 명령어의 작동 원리

  • git add <파일명>
    • 인덱스의 내용과 비교했을 때 로컬에서 변동된 사항을 인덱스에 반영시키는 명령어
    • 새로 생성된 파일, 수정/삭제된 기존 파일이 add 명령의 대상이 됨.
  • git commit -m <메세지>
    • 인덱스의 내용을 바탕으로 새로운 버전(commit 파일)을 생성하는 명령어
    • 특정 시점의 프로젝트를 하나의 버전으로서 저장해준다는 의미

고차함수와 async / await 같이 쓰기

Promise.all()를 활용하면 된다.

예시)

const newArray = await Promise.all(
  array.map(async (value) => {
    const newValue = await asyncFunc(value);
    return newValue;
  }
));
profile
대학생에서 취준생으로 진화했다가 지금은 풀스택 개발자로 2차 진화함

1개의 댓글

comment-user-thumbnail
2023년 7월 26일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기