logo

Git

8 Posts found

[CLI] init, add, commit 커맨드 구현
GitCLICommit2025.01.23

[CLI] init, add, commit 커맨드 구현

Git의 기본 명령어인 init, add, commit을 유사하게 구현한 과정이다. Git CLI  commander.js 라이브러리를 사용하여 커맨드와 옵션들을 정의하고 CLI Command Line Interface 를 간단히 구현할 수 있었다. 먼저, commander.js를 설치하고 CLI 엔트리 파일 cli.js 을 생성했다. CLI를...

Blob 객체 구현
GitBlob2025.01.10

Blob 객체 구현

Blob 클래스는 다음 메서드로 구성되어 있다. constructor calculteHash save 코드 설명 매개변수 초기화 처리 과정 git 형식 헤더 추가 \0 SHA-1 해시 계산 및 반환 코드 설명 매개변수 처리 과정 객체 저장 경로 생성 repoPath/.pit/objects// 디렉터리 생성 파일 내용 저장

Commit 객체 구현
GitCommit2025.01.10

Commit 객체 구현

Commit 클래스는 다음 메서드로 구성되어 있다. constructor serialize calculateHash save 코드 설명 매개변수 초기화 git cat-file -p 명령어를 실행하면 다음과 같은 형식으로 출력된다. 처리 과정 내용 직렬화 Git 형식 헤더 추가 \0 SHA-1 해시 계산 및 반환 코드 설명 매개변수 리턴 처리 과정...

Git 객체 생성 및 저장 테스트
GitBlobTree2025.01.10

Git 객체 생성 및 저장 테스트

Git의 핵심 객체들의 구현을 마쳤다. 실제로 이 객체들이 파일시스템에 잘 저장되는지 확인해 볼 필요가 있었다. 먼저 Git 저장소의 기본 구조부터 만들어야 했다. .git 디렉터리를 본떠 .pit 디렉터리를 만들고, 그 안에 필요한 디렉터리를 생성했다. Git과 동일하게 objects 디렉터리는 Git의 모든 객체들이 저장되는 곳이고,...

Tree 객체 구현
GitTree2025.01.10

Tree 객체 구현

Tree 클래스는 다음 메서드로 구성되어 있다. constructor addEntry serialize calculateHash save 객체 타입은 "tree"로 설정하며, 파일과 디렉터리 정보를 저장할 Map 객체를 생성한다. hash의 경우 null로 초기화해둔다.  entries는 다음과 같은 구조를 지닌다. 코드 설명 매개변수...

[Git] Branch
GitBranch2025.01.08

[Git] Branch

Git은 Branch를 통해 독립적인 작업 공간을 생성하고 관리한다. Branch의 내부 동작 원리를 이해하기 위해 Branch가 무엇인지, 그리고 어떻게 동작하는지 살펴보았다. Branch는 특정 Commit을 가리키는 포인터다. Git은 Branch를 41bytes의 파일로 관리하는데, 40bytes는 SHA-1 해시값이고 1byte는 개행문자다....

[Git] Staging Area
GitIndexStagingArea2025.01.08

[Git] Staging Area

Git은 Working Directory, Staging Area, Repository 세 가지 영역을 사용하여 파일을 관리한다. 그 중 Staging Area Index라고도 함 는 다음 Commit에 포함될 변경사항들을 준비하는 중간 영역이다. Working Directory Staging Area Repository Git에서 파일은 다음 네...

[Git] Blob, Tree, Commit Object
GitBlobTree2025.01.07

[Git] Blob, Tree, Commit Object

Git은 파일과 디렉터리를 효율적으로 관리하기 위해 내부적으로 Blob, Tree, Commit이라는 세 가지 주요 객체를 사용한다. Git의 내부 동작 원리를 이해하기 위해 이 객체들이 무엇인지, 그리고 서로 어떻게 연결되어 있는지 살펴보았다. Blob은 파일의 내용을 저장하는 Git 객체다. Git은 파일의 이름이나 메타데이터 대신, 파일의...