>  기사  >  개발 도구  >  git의 기본 처리 흐름

git의 기본 처리 흐름

王林
王林원래의
2023-05-20 09:11:07539검색

GitHub 및 GitLab과 같은 코드 호스팅 플랫폼의 인기로 인해 Git은 많은 주목을 받는 버전 제어 도구가 되었으며, 점점 더 많은 사람들이 Git의 작동 방식을 이해하고 있습니다. 그러나 Git의 외관을 이해하는 것은 Git을 사용하는 것일 뿐입니다. Git을 제대로 이해하려면 Git의 기본 처리 흐름도 이해해야 합니다.

Git의 기본 구조 개요

Git은 중앙 집중식 버전 제어 시스템(예: SVN)에 해당하는 분산 버전 제어 시스템입니다. Git의 분산 특성으로 인해 모든 Git 웨어하우스는 완전한 웨어하우스입니다.

Git의 작업 디렉터리에는 Git 웨어하우스 개체와 작업 트리의 두 부분이 있습니다. Git 웨어하우스 개체와 작업 트리의 상태는 각각 별칭, 하드 링크 및 소프트 링크 간의 관계로 비유할 수 있습니다.

Git의 기본 파일 저장 방법

Git의 기본 파일 저장 기술은 크게 두 가지 측면으로 나뉜다:

  1. 객체 저장
  2. 압축 가능한 파일 형식 사용

객체 저장

Git은 모든 코드 변경 사항을 하나씩 객체로 저장합니다. 에서 주요 개체는 blob, tree 및 commit입니다. 그 중 blob은 코드 내용의 스냅샷이고, tree는 파일 및 디렉터리 집합의 스냅샷이며, 커밋은 코드 변경 사항의 스냅샷입니다.

주의깊은 독자라면 이러한 개체가 Linux 시스템의 inode 메커니즘과 다소 유사하다는 것을 알게 될 것입니다. inode 파일 노드는 파일이나 디렉터리를 나타낼 수 있으며 inode 파일 노드에는 디스크 블록 번호와 같은 정보가 포함되어 있습니다. Git에서 blob은 inode 파일 노드에 있는 파일 콘텐츠의 스냅샷 개체이고, tree는 inode 디렉터리의 스냅샷 개체이며, commit은 여러 inode 파일 노드로 구성된 버전 스냅샷입니다.

Git에서 객체는 일반적으로 SHA1 해시로 표시됩니다. SHA1 해시 값은 40자의 16진수 문자열입니다. Git은 SHA1 해시를 사용하여 각 버전, 각 파일 및 디렉터리, 각 커밋에 고유 식별자를 할당합니다.

압축 가능한 파일 형식 사용

Git의 최하위 계층에서는 파일에 메타데이터의 일부를 추가하여 코드 변경을 처리하는 기술을 사용합니다. 메타데이터는 두 커밋 간의 변경 정보와 같은 중간 상태인 경우가 많습니다. 이 정보는 작은 파일로 압축하고 필요할 때 압축을 풀 수 있습니다.

Git에서 사용하는 기본 파일 형식은 packfile 형식입니다. Packfile은 Git이 교차 네트워크 작업을 수행할 때 전송을 위해 여러 개체를 단일 파일로 보관할 수 있는 고도로 압축된 Git 개체 저장소 형식입니다.

Git의 기본 핵심 처리 흐름

이전 콘텐츠에서 Git 개체와 기본 파일 저장 기술에 대해 자세히 알아보았으며 다음으로 Git의 기본 핵심 처리 흐름에 대해 알아봅니다.

Git 초기화 프로세스

  1. Create Directory.git/
  2. Create subdirectory.git/objects/
  3. Create subdirectory.git/refs/
  4. 빈 HEAD 파일 만들기
  5. 빈 인덱스 파일 만들기

Git의 기본 파일 명령

다음은 Git의 다양한 기본 파일 명령에 대한 간략한 소개입니다:

  1. hash-object 명령: 파일을 Git 개체로 변환하는 데 사용됩니다.
  2. cat-file 명령: Git 개체의 내용을 표시하는 데 사용됩니다.
  3. ls-tree 명령: 특정 Git 트리의 내용을 표시하는 데 사용됩니다.
  4. update-index 명령: Git 인덱스에 파일이나 디렉터리를 추가하는 데 사용됩니다.
  5. write-tree 명령: Git 인덱스를 Git 트리 개체로 변환하는 데 사용됩니다.

Git의 제출 프로세스

Git의 제출 프로세스는 여전히 Blob, Tree 및 Commit의 세 가지 필드로 구성됩니다.

  1. Blob: 파일 이름, 파일 유형, 물론 SHA1 해시 값 등을 포함하여 코드에서 각 파일의 메타데이터를 나타내는 데 사용됩니다.
  2. Tree: 이전 단계의 Blob을 기반으로 해당 파일과 디렉터리를 조합하여 스냅샷 트리를 형성하고 Git 노드에 저장합니다.
  3. 커밋: 위의 두 개체와 제출된 사용자 정보를 조합하여 버전 스냅샷을 형성합니다.

위 단계에서 주의해야 할 사항이 있습니다. 예를 들어 Blob 변환을 수행할 때 -g 매개변수를 추가해야 합니다.

Git의 분기 프로세스

Git에서 분기는 마지막으로 제출된 개체를 가리키는 독립적인 포인터입니다. 분기에는 로컬 분기와 원격 분기의 두 가지 유형이 있습니다.

로컬 브랜치가 생성된 후 새 커밋을 추가하면 HEAD가 자동으로 최신 커밋을 가리키도록 이동됩니다. 이 기간 동안 checkout 명령을 사용하여 다른 지점 간에 전환합니다. 원격 분기는 서로 다른 로컬 라이브러리 간의 코드를 공동 작업하는 방법을 나타냅니다.

요약

이 글에서는 Git의 기본 파일 저장 방법과 Git의 기본 핵심 처리 프로세스라는 두 가지 측면에서 Git의 기본 처리 프로세스를 자세히 설명합니다. Git 객체와 기본 파일 저장 기술에 대한 설명을 통해 Git의 기본 아키텍처를 이해합니다. 또한 이 기사에서는 Git의 초기화 프로세스, Git의 기본 파일 명령, Git의 제출 프로세스, Git의 분기 프로세스를 포함하여 Git의 기본 핵심 처리 프로세스를 소개합니다. Git의 기본 처리 흐름에 대한 심층적인 이해를 통해 Git의 작동 메커니즘을 더 잘 이해하고 Git을 버전 제어에 보다 효율적으로 사용할 수 있습니다.

위 내용은 git의 기본 처리 흐름의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.