강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

김태훈님의 프로필 이미지
김태훈

작성한 질문수

Git & GitHub, 원리부터 차근차근 - 근본깃 [완성편]

완강을 진심으로 축하드립니다 :)

stage area 는 로컬만의 기능인가?

해결된 질문

작성

·

90

·

수정됨

0

안녕하세요

어제 완주를 완료하고 커피까지 감사하게 잘 받았습니다.

다름이 아니라 로컬에 git 을 설치하고 버전 컨트롤을 하게 되면 stage area 라는 보이지 않는 공간에 대한 이해를 하고 git 을 운영하게 되는데요.

github 에 버전 컨트롤을 하게 되면 stage area 가 존재하지 않는데, 이런 차이를 이해하려면 어떻게 받아 들여야 할까요?

앗.. 추가로 로컬에 git 을 설치하게 되면 실제로 파일들이나 브랜치 관련 정보는 실제 어디에 저장되어 누적되는지도 궁금합니다~! 😊😊

답변 3

0

geek님의 프로필 이미지
geek
지식공유자

안녕하세요, 태훈님 😀

궁금하신 점은 해결되었을까요?

 

추가적으로 궁금하신 부분이 있다면, 편하게 질문해주세요!

0

geek님의 프로필 이미지
geek
지식공유자

안녕하세요, 태훈님 😀

1. github에는 staging area가 존재하지 않습니다.
github은 "세 저장소 중 repository만을 보관하고 있는 클라우드"라고 이해하시면 됩니다 ㅎㅎ

2. git init을 하게되면, 우리의 폴더에는 '.git' 이라는 숨겨진 폴더가 생성되는데요. 찾으시려는 정보는 모두 .git 폴더 내부에 저장됩니다.

2-1. 커밋 (Commit)

  • 저장 위치: .git/objects/ 디렉토리.

  • 저장 방식:

    • 커밋은 객체(Object)로 저장되며, SHA-1 해시 값을 기반으로 이름이 정해진 파일에 저장됩니다.

    • 객체는 압축(zlib) 형식으로 저장되며, 커밋 메시지, 부모 커밋의 해시, 작성자 정보, 트리(Tree) 객체 해시 등이 포함됩니다.

    • 예를 들어, 커밋 해시가 a1b2c3...라면, 파일은 .git/objects/a1/b2c3...에 저장됩니다.

2-2. 블랍(blob)

  • 저장 위치: .git/objects/ 디렉토리.

  • 저장 방식:

    • 블랍 객체는 파일의 콘텐츠 자체를 저장합니다. 파일 이름이나 메타데이터는 저장되지 않고, 오직 파일의 내용만 포함됩니다.

    • 파일의 내용이 동일하다면 동일한 블랍 해시를 공유합니다.

    • 블랍 객체의 해시는 파일 내용의 SHA-1 해시 값으로 결정되며, .git/objects/xx/yyyy... 형식으로 저장됩니다.

2-3. 트리 (Tree)

  • 저장 위치: .git/objects/ 디렉토리.

  • 저장 방식:

    • 트리 객체는 디렉토리 구조를 나타냅니다. 트리에는 해당 디렉토리의 블랍과 하위 트리 객체의 해시 값, 파일 이름, 모드 정보(예: 실행 권한)가 저장됩니다.

    • 트리 객체는 SHA-1 해시 값으로 식별되며, .git/objects/xx/yyyy...에 저장됩니다.


2-4. 브랜치 (branch)

  • 저장 위치: .git/refs/heads/ 디렉토리.

  • 저장 방식:

    • 각 브랜치의 이름에 해당하는 파일이 있고, 파일 안에는 브랜치의 최신 커밋 해시가 저장됩니다.

    • 예: main 브랜치의 파일은 .git/refs/heads/main이며, 내용은 해당 브랜치의 최신 커밋 해시입니다.

       

2-5. HEAD

  • 저장 위치: .git/HEAD 파일.

  • 저장 방식:

    • 현재 체크아웃된 브랜치를 가리키며, ref: refs/heads/<브랜치 이름> 형식으로 저장됩니다.

    • 특정 커밋을 체크아웃한 경우(분리된 HEAD 상태)에는 커밋 해시가 직접 저장됩니다.


git의 내부 구조나 원리를 더 깊게 이해하고 싶으시다면, 아래 링크를 참고해주세요!

https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EB%82%B4%EB%B6%80-Git-%EA%B0%9C%EC%B2%B4

0

안녕하세요, 인프런 AI 인턴입니다. 김태훈님께서 궁금해하신 Git의 스테이징 영역과 GitHub의 차이에 대해 설명드리겠습니다.

Git의 스테이징 영역 (Stage Area)

Git의 스테이징 영역은 로컬에서 파일을 커밋하기 전에 임시로 저장하는 공간입니다. 이곳은 작업한 변경사항을 선택적으로 추가하여, 한 개의 커밋으로 기록할 준비를 합니다. 이 단계는 로컬 Git 환경에서 이루어지며, 사용자가 원하는 대로 커밋을 구성할 수 있는 유연성을 제공하는 점이 특징입니다.

GitHub와 스테이징의 차이

GitHub는 리모트 저장소로, 완료된 커밋을 원격 서버에 푸시하여 저장합니다. 스테이징 영역은 로컬 개발 환경의 일부로, GitHub와 직접적으로 연결되지 않습니다. 스테이징 영역은 Git에서의 로컬 버전 관리의 일부이기 때문에, GitHub 같은 원격 저장소에서는 보이지 않습니다. 대신 GitHub에서는 푸시된 커밋들이 저장되고 관리됩니다.

파일과 브랜치 정보의 저장 위치

로컬에 Git을 설치하면, Git은 프로젝트 폴더 안에 .git 디렉토리를 만들어 버전 관리 데이터를 저장합니다. 모든 브랜치 정보와 커밋 내역은 이 .git 폴더 내에 저장되어 누적됩니다.

참고 자료:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김태훈님의 프로필 이미지
김태훈

작성한 질문수

질문하기